Получить значение строки после косой черты в JavaScript


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

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

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

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

9 76

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

попробовать;

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

теперь у вас есть последние.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);
  }