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