Получить значение строки после косой черты в JavaScript - PullRequest
92 голосов
/ 04 декабря 2011

Я уже больше часа пытаюсь и не могу найти правильный способ сделать это, хотя это, вероятно, довольно просто:

У меня есть что-то вроде этого: foo/bar/test.html

Я хотел бы использовать jQuery для извлечения всего после последнего /. В приведенном выше примере результат будет test.html.

Полагаю, это можно сделать с помощью substr и indexOf(), но я не могу найти рабочее решение.

Ответы [ 9 ]

194 голосов
/ 04 декабря 2011

По крайней мере, тремя способами:

Регулярное выражение:

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 и производительности, поскольку движки так радикально отличаются друг от друга), но если вы не делаете это тысячи раз в цикле, это не имеет значения, и я буду стремиться к ясности кода.

24 голосов
/ 04 декабря 2011

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

var parts = myString.split('/');
var answer = parts[parts.length - 1];

Где myString содержит вашу строку.

10 голосов
/ 04 декабря 2011
var str = "foo/bar/test.html";
var lastSlash = str.lastIndexOf("/");
alert(str.substring(lastSlash+1));
5 голосов
/ 04 декабря 2011

Попробуйте;

var str = "foo/bar/test.html";
var tmp = str.split("/");
alert(tmp.pop());
2 голосов
/ 14 апреля 2014
String path ="AnyDirectory/subFolder/last.htm";
int pos = path.lastIndexOf("/") + 1;

path.substring(pos, path.length()-pos) ;

Теперь у вас есть last.htm в строке пути.

1 голос
/ 27 ноября 2017

Как требуется в вопросе ::

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);
  }
1 голос
/ 05 декабря 2016

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);

Заменить '_' || «/» для собственных нужд

1 голос
/ 11 апреля 2016

легкий вес

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
1 голос
/ 08 августа 2012

Когда я знаю, что строка будет достаточно короткой, тогда я использую следующую строку:

...