Как я могу удалить все символы вплоть до 3-го слеша в строке? - PullRequest
6 голосов
/ 11 мая 2011

У меня проблемы с удалением всех символов вплоть до 3-й косой черты в JavaScript.Это моя строка:

http://blablab/test

Результат должен быть:

test

Кто-нибудь знает правильное решение?

Ответы [ 5 ]

18 голосов
/ 11 мая 2011

Чтобы получить последний элемент в пути, вы можете разбить строку на /, а затем pop():

var url = "http://blablab/test";
alert(url.split("/").pop());
//-> "test"

Чтобы указать отдельную детальпути , разделить на / и использовать скобки для доступа к элементу:

var url = "http://blablab/test/page.php";
alert(url.split("/")[3]);
//-> "test"

Или, если вы хотите все после третьего слеша , split(), slice() и join():

var url = "http://blablab/test/page.php";
alert(url.split("/").slice(3).join("/"));
//-> "test/page.php"
2 голосов
/ 11 мая 2011
var str = "http://blablab/test";
var index = 0;
for(var i = 0; i < 3; i++){
    index = str.indexOf("/",index)+1;
}
str = str.substr(index);

Чтобы сделать его одним вкладышем, вы можете сделать следующее:

str = str.substr(str.indexOf("/",str.indexOf("/",str.indexOf("/")+1)+1)+1);
2 голосов
/ 11 мая 2011
var string = 'http://blablab/test'
string = string.replace(/[\s\S]*\//,'').replace(/[\s\S]*\//,'').replace(/[\s\S]*\//,'')
alert(string)

Это регулярное выражение.Ниже я объясню

регулярное выражение /[\s\S]*\//

/ - начало регулярного выражения

, где [\s\S] означает пробел или не пробел (что угодно),не путать с ., который не соответствует переводу строк (. совпадает с [^\r\n]).

* означает, что мы сопоставляем любое число от нуля до неограниченного числа [\s\S]

\/ Значения соответствуют символу косой черты

Последний / является концом регулярного выражения

0 голосов
/ 11 мая 2011

Вы можете использовать регулярное выражение, подобное этому:

'http://blablab/test'.match(/^(?:[^/]*\/){3}(.*)$/);
// -> ['http://blablab/test', 'test]

Строковый метод match дает вам либо массив (всего совпадения, в данном случае всего ввода, и любых групп захвата (и нам нужна первая группа захвата)), либо ноль. Итак, для общего использования вам нужно вытащить 1-й элемент массива или ноль, если совпадение не найдено:

var input = 'http://blablab/test',
    re = /^(?:[^/]*\/){3}(.*)$/,
    match = input.match(re),
    result = match && match[1]; // With this input, result contains "test"
0 голосов
/ 11 мая 2011

Вы можете использовать split, чтобы разбить строку на части, и использовать slice, чтобы вернуть все части после третьего среза.

var str = "http://blablab/test",
    arr = str.split("/");
arr = arr.slice(3);
console.log(arr.join("/"));  // "test"

// A longer string:
var str = "http://blablab/test/test";  // "test/test";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...