Получить значение строки после косой черты в JavaScript
Я уже пытаюсь в течение часа и не могу понять, как это сделать, хотя это, вероятно, довольно легко:
у меня что-то вроде этого : foo/bar/test.html
Я хотел бы использовать jQuery, чтобы извлечь все после последнего /
. В приведенном выше примере выход будет test.html
.
Я думаю, что это можно сделать с помощью substr
и indexOf()
, но я не могу найти рабочее решение.
9 ответов:
по крайней мере тремя способами:
регулярное выражение:
var result = /[^/]*$/.exec("foo/bar/test.html")[0];
...что говорит "захватите серию символов, не содержащих косой черты" (
[^/]*
) В конце строки ($
). Затем он захватывает соответствующие символы из возвращенного объекта match путем индексирования в него ([0]
); в объекте соответствия первой записью является вся согласованная строка. Нет необходимости в группах захвата.видео
используя
lastIndexOf
иsubstring
:var str = "foo/bar/test.html"; var n = str.lastIndexOf('/'); var result = str.substring(n + 1);
lastIndexOf
делает то, что это звучит так: он находит индекс последние вхождение символа (ну, string) в строку, возвращая -1, если не найден. В девяти случаях из десяти вы, вероятно, хотите проверить это возвращаемое значение (if (n !== -1)
), но в приведенном выше, так как мы добавляем 1 к нему и вызываем подстроку, мы в конечном итоге делаемstr.substring(0)
который просто возвращает строку.используя
Array#split
Sudhir и том Уолтерс это покрыл здесь и здесь, но только для полноты картины:
var parts = "foo/bar/test.html".split("/"); var result = parts[parts.length - 1]; // Or parts.pop();
split
разбивает строку с помощью заданного разделителя, возвращая массив.The
lastIndexOf
/substring
решение наверное самый эффективный (хотя всегда нужно быть осторожным, говоря что-либо о JavaScript и производительности, поскольку двигатели так радикально отличаются друг от друга), но если вы этого не делаете тысячи раз в цикле, это не имеет значения, и я бы стремился к ясности кода.
вам не нужен jQuery, и есть куча способов сделать это, например:
var parts = myString.split('/'); var answer = parts[parts.length - 1];
где myString содержит вашу строку.
var str = "foo/bar/test.html"; var lastSlash = str.lastIndexOf("/"); alert(str.substring(lastSlash+1));
String path ="AnyDirectory/subFolder/last.htm"; int pos = path.lastIndexOf("/") + 1; path.substring(pos, path.length()-pos) ;
теперь у вас есть последние.htm в строке пути.
когда я знаю, что строка будет достаточно короткой, я использую следующий лайнер... (не забудьте избежать обратной косой черты)
// if str is C:\windows\file system\path\picture name.jpg alert( str.split('\').pop() );
предупреждение всплывает с
picture name.jpg
легкий вес
string.substring(start,end)
здесь
start = Required
. Положение, с которого начинается извлечение. Первый символ имеет индекс 0`.
end = Optional
. Положение (до, но не включая) где закончить извлечение. Если этот параметр опущен, извлекается остальная часть строки.var string = "var1/var2/var3"; start = string.lastIndexOf('/'); //console.log(start); o/p:- 9 end = string.length; //console.log(end); o/p:- 14 var string_before_last_slash = string.substring(0, start); console.log(string_before_last_slash);//o/p:- var1/var2 var string_after_last_slash = string.substring(start+1, end); console.log(string_after_last_slash);//o/p:- var3
или
var string_after_last_slash = string.substring(start+1); console.log(string_after_last_slash);//o/p:- var3
Jquery:
var afterDot = value.substr(value.lastIndexOf('_') + 1);
Javascript:
var myString = 'asd/f/df/xc/asd/test.jpg' var parts = myString.split('/'); var answer = parts[parts.length - 1]; console.log(answer);
замените ' _ '| | ' / ' на вашу собственную потребность
как требуется в вопросе::
var string1= "foo/bar/test.html"; if(string1.contains("/")) { var string_parts = string1.split("/"); var result = string_parts[string_parts.length - 1]; console.log(result); }
и для вопроса, заданного по url (попросил один случай'=')::
[http://stackoverflow.com/questions/24156535/how-to-split-a-string-after-a-particular-character-in-jquery][1]var string1= "Hello how are =you"; if(string1.contains("=")) { var string_parts = string1.split("="); var result = string_parts[string_parts.length - 1]; console.log(result); }