Obtenir la valeur d'une chaîne de caractères après un slash dans JavaScript
je suis déjà en train d'essayer pendant plus d'une heure et ne peux pas trouver la bonne façon de le faire, bien que ce soit probablement assez facile:
j'ai quelque chose comme ceci: foo/bar/test.html
je voudrais utiliser jQuery pour extraire tout 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 peux pas trouver une solution de travail.
9 réponses
au moins trois façons:
Une expression régulière:
var result = /[^/]*$/.exec("foo/bar/test.html")[0];
...qui dit "saisir la série de caractères ne contenant une barre oblique" ( [^/]*
) à la fin de la chaîne ( $
). Ensuite, il saisit les caractères appariés de l'objet match retourné en y indexant ( [0]
); dans un objet match, la première entrée est la chaîne entière appariée. Pas besoin de capturer des groupes.
utilisant lastIndexOf
et substring
:
var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);
lastIndexOf
fait ce qu'il semble faire: il trouve l'index du dernier occurrence d'un caractère (bien, chaîne) dans une chaîne, en retournant -1 si pas trouvé. Neuf fois sur dix vous voulez probablement vérifier cette valeur de retour ( if (n !== -1)
), mais dans le ci-dessus puisque nous ajoutons 1 à elle et l'appel sous-couche, on finirait par faire str.substring(0)
qui renvoie juste la chaîne.
utilisant Array#split
Sudhir et Tom Walters ont ceci couvert ici et ici , mais juste pour l'exhaustivité:
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, renvoyant un tableau.
la solution lastIndexOf
/ substring
est probablement le plus efficace (bien qu'on doive toujours être prudent en disant quoi que ce soit au sujet de JavaScript et de performance, puisque les moteurs varient si radicalement l'un de l'autre), mais à moins que vous ne le fassiez des milliers de fois dans une boucle, il n'a pas d'importance et je m'efforcerais pour la clarté du code.
Vous n'avez pas besoin de jQuery, et il y a des tas de 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 dernier .htm dans la chaîne path.
quand je sais que la corde va être assez courte, alors j'utilise la doublure suivante... (n'oubliez pas de 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
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 sans inclure) où mettre fin à l'extraction. Si elle est omise, elle 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
ou
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);
remplacer " _ '/ / ' / ' / 'selon vos besoins
, Comme dans la 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 '=' )::
[ /q/comment-à-split-une-chaîne-après-un-particulier-caractère-en-jquery-dupliquer-11072/"Bonjour comment allez - =vous";
si(chaîne1.contenir="("))
{
var string_parts = string1.Split="(");
var résultat = string_parts[string_parts.longueur - 1];
console.journal(suite);
}