Получить значение строки после удара в JavaScript
-
28-10-2019 - |
Вопрос
Я уже пытаюсь более часа и не могу понять правильный способ сделать это, хотя это, вероятно, довольно легко:
У меня есть что -то вроде этого: foo/bar/test.html
Я хотел бы использовать jQuery, чтобы извлечь все после последнего /
. Анкет В примере вышеупомянутого вывода будет test.html
.
Я думаю, это можно сделать с помощью substr
а также indexOf()
, но я не могу найти рабочее решение.
Решение
Как минимум три способа:
Регулярное выражение:
var result = /[^/]*$/.exec("foo/bar/test.html")[0];
... в котором говорится: «Возьмите серию персонажей, не содержащих черту» ([^/]*
) в конце струны ($
) Затем он захватывает соответствующие символы из возвращенного объекта соответствия, индексируя его ([0]
); В объекте соответствия первая запись - это целая соответствующая строка. Нет необходимости в группах захвата.
С использованием lastIndexOf
а также substring
:
var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);
lastIndexOf
делает то, что звучит так: он находит индекс последний Появление символа (хорошо, строка) в строке, возвращая -1, если не найдено. Девять раз из десяти вы, вероятно, захотите проверить это возвратное значение (if (n !== -1)
), но в вышесказанном, так как мы добавляем 1 к нему и вызовут подстроение, мы в конечном итоге сделали str.substring(0)
который просто возвращает строку.
С использованием Array#split
Судхир и Том Уолтерс здесь а также здесь, но только для полноты:
var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();
split
Разбивает строку, используя заданный разделитель, возвращая массив.
А lastIndexOf
/ substring
Решение вероятно Наиболее эффективно (хотя всегда нужно быть осторожным, рассказывая о JavaScript и производительности, поскольку двигатели так радикально различаются друг от друга), но если вы не делаете это тысячи раз в цикле, это не имеет значения, и я 'D стремиться к ясности кода.
Другие советы
Вам не нужен 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));
Пытаться;
var str = "foo/bar/test.html"; var tmp = str.split("/"); alert(tmp.pop());
String path ="AnyDirectory/subFolder/last.htm";
int pos = path.lastIndexOf("/") + 1;
path.substring(pos, path.length()-pos) ;
Теперь у вас есть Last.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-fter-a-particular-character-in-jquery= [
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);
}