Get value of a string after a slash in JavaScript

Staram się już od ponad godziny i nie mogę znaleźć odpowiedniego sposobu, aby to zrobić, chociaż prawdopodobnie jest to dość łatwe: {]}

Mam coś takiego: foo/bar/test.html

Chciałbym użyć jQuery, aby wyodrębnić wszystko po ostatnim /. W powyższym przykładzie wyjście to test.html.

Myślę, że można to zrobić za pomocą substr i indexOf(), ale nie mogę znaleźć działającego rozwiązania.

Author: Saravanan, 2011-12-04

9 answers

Przynajmniej na trzy sposoby:

Wyrażenie regularne:

var result = /[^/]*$/.exec("foo/bar/test.html")[0];

...który mówi " chwyć serię znaków nie zawierających ukośnika "([^/]*) na końcu łańcucha ($). Następnie chwyta dopasowane znaki ze zwracanego obiektu match przez indeksowanie do niego ([0]); w obiekcie match pierwszym wpisem jest cały dopasowany łańcuch. Nie ma potrzeby grup przechwytywania.

Przykład na żywo

Używając lastIndexOf i substring:

var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);

lastIndexOf robi to, na co wygląda: znajduje indeks ostatniego wystąpienia znaku (well, string) w łańcuchu, zwracając -1, jeśli nie został znaleziony. Dziewięć razy na dziesięć prawdopodobnie chcesz sprawdzić tę zwracaną wartość (if (n !== -1)), ale w powyższym przykładzie, ponieważ dodajemy do niej 1 i wywołujemy podłańcuch, skończymy na str.substring(0), który po prostu zwraca łańcuch.

Za pomocą Array#split

Sudhir i Tom Walters mają to pokryte tutaj i tutaj , ale tylko dla kompletność:

var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();

split rozdziela łańcuch za pomocą podanego ogranicznika, zwracając tablicę.

The lastIndexOf / substring rozwiązanie jest prawdopodobnie najbardziej wydajne (chociaż zawsze trzeba uważać, mówiąc cokolwiek o JavaScript i wydajności, ponieważ silniki różnią się tak radykalnie od siebie), ale jeśli nie robisz tego tysiące razy w pętli, to nie ma znaczenia i dążyłbym do jasności kodu.

 161
Author: T.J. Crowder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:13

Nie potrzebujesz jQuery, a jest na to kilka sposobów, na przykład:

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

Gdzie myString Zawiera Twój ciąg znaków.

 21
Author: Tom Walters,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-04 16:02:40
var str = "foo/bar/test.html";
var lastSlash = str.lastIndexOf("/");
alert(str.substring(lastSlash+1));
 8
Author: kasdega,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-04 16:04:27

Try;

var str = "foo/bar/test.html";
var tmp = str.split("/");
alert(tmp.pop());
 5
Author: Sudhir Bastakoti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-04 16:01:09
String path ="AnyDirectory/subFolder/last.htm";
int pos = path.lastIndexOf("/") + 1;

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

Teraz masz Ostatni.htm w łańcuchu ścieżki.

 2
Author: Xar E Ahmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-08 05:14:45

Kiedy wiem, że sznurek będzie dość krótki, używam następującego linera... (pamiętaj o unikaniu ukośników)

// if str is C:\windows\file system\path\picture name.jpg
alert( str.split('\\').pop() );

Alert wyskakuje z picture name.jpg

 1
Author: DaveAlger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-08 17:44:24

Waga lekka

string.substring(start,end)

Gdzie

start = Required. Pozycja, w której należy rozpocząć ekstrakcję. Pierwszy znak jest w indeksie 0`.

end = Optional. Pozycja (do, ale nie włącznie), gdzie zakończyć ekstrakcję. Jeśli zostanie pominięty, wyciąga resztę łańcucha.

    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

Lub

    var string_after_last_slash = string.substring(start+1);
    console.log(string_after_last_slash);//o/p:- var3
 1
Author: Shailesh Sonare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-11 08:29:44

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

Zastąp '_' || '/' na własne potrzeby

 0
Author: S. Domeng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-05 01:34:41

Wymagane w pytaniu:

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

I dla pytania zadanego na url (zapytanego o jedno wystąpienie'=')::
[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);
  }
 0
Author: Vishal Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-27 21:03:45