J'essaie déjà depuis plus d'une heure et je ne peux pas trouver la bonne façon de le faire, même si c'est probablement assez facile:
J'ai quelque chose comme ça: foo/bar/test.html
Je voudrais utiliser jQuery pour tout extraire après le dernier /
. Dans l'exemple ci-dessus, la sortie serait test.html
.
Je suppose que cela peut être fait en utilisant substr
et indexOf()
, mais je ne trouve pas de solution de travail.
Au moins trois façons:
var result = /[^/]*$/.exec("foo/bar/test.html")[0];
... qui dit "attrape la série de caractères ne contenant pas de barre oblique" ([^/]*
) à la fin de la chaîne ($
). Ensuite, il récupère les caractères correspondants de l'objet correspondant retourné en y indexant ([0]
); dans un objet match, la première entrée est la chaîne correspondante. Pas besoin de groupes de capture.
lastIndexOf
et substring
:var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);
lastIndexOf
fait ce que cela ressemble: il trouve l'indice de l'occurrence de la dernière d'un caractère (bien, chaîne) dans une chaîne, retournant -1 s'il n'est pas trouvé. Neuf fois sur dix, vous voudrez probablement vérifier cette valeur de retour (if (n !== -1)
), mais dans ce qui précède, puisque nous y ajoutons 1 et que nous appelons une sous-chaîne, nous finirions par faire str.substring(0)
qui renvoie la chaîne.
Array#split
Sudhir et Tom Walters ont ceci couvert ici et ici , mais juste pour être complet:
var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();
split
divise une chaîne en utilisant le délimiteur donné et renvoie un tableau.
La solution lastIndexOf
/substring
est probablement la plus efficace (bien qu'il faille toujours faire très attention en matière de JavaScript et de performances, car les moteurs varient considérablement de les uns des autres), mais à moins que vous ne fassiez cela des milliers de fois en boucle, cela n'a pas d'importance et je m'efforcerais d'obtenir un code plus clair.
Vous n'avez pas besoin de jQuery, et il existe de nombreuses façons de le faire, par exemple:
var parts = myString.split('/');
var answer = parts[parts.length - 1];
Où myString contient votre chaîne.
var str = "foo/bar/test.html";
var lastSlash = str.lastIndexOf("/");
alert(str.substring(lastSlash+1));
Essayer;
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) ;
Maintenant, vous avez le last.htm dans la chaîne de chemin.
poids léger
string.substring(start,end)
où
start = Required
. La position où commencer l'extraction. Le premier caractère est à l'index 0`.
end = Optional
. La position (jusqu'à, mais non comprise) où mettre fin à l'extraction. Si omis, il extrait le reste de la chaîne.
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
OR
var string_after_last_slash = string.substring(start+1);
console.log(string_after_last_slash);//o/p:- var3
Quand je sais que la chaîne va être raisonnablement courte, j'utilise la doublure suivante ... (n'oubliez pas d'échapper aux barres obliques inverses)
// if str is C:\windows\file system\path\picture name.jpg
alert( str.split('\\').pop() );
alerte apparaît avec picture name.jpg
Comme requis dans Question ::
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);
}
et pour la question posée sur url (demandé pour une occurrence de '=') ::
[ 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);
}
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);
Remplacer '_' || '/' à vos propres besoins