89 votes

Sous-chaîne avec indice inverse

Comment puis-je extraire "456" de "xxx_456" où xxx est de longueur indéfinie ?

2 votes

Cette question serait tellement plus utile si elle était formulée de manière générale : "Comment extraire la fin d'une chaîne de caractères après la dernière occurrence d'un délimiteur donné ?

191voto

Andy E Points 132925

slice fonctionne très bien dans IE et dans d'autres navigateurs, cela fait partie des spécifications et c'est aussi la méthode la plus efficace :

alert("xxx_456".slice(-3));
//-> 456

Méthode slice (Chaîne) - MSDN
tranche - Centre des développeurs Mozilla

0 votes

Notez que l'inverse serait pas travail : "xxx_456".slice(3)

2 votes

@user1429980 Si par "inverser" vous entendez supprimer les trois derniers chiffres, c'est le cas. "xxx_456".slice(0, -3)

83voto

Psytronic Points 2886
var str = "xxx\_456";
var str\_sub = str.substr(str.lastIndexOf("\_")+1);

S'il n'est pas toujours composé de trois chiffres à la fin (et séparé par un trait de soulignement). Si le délimiteur de fin n'est pas toujours un trait de soulignement, vous pouvez alors utiliser une expression rationnelle :

var pat = /(\[0-9\]{1,})$/;
var m = str.match(pat);

1 votes

+1 lastIndexOf est exactement ce que vous voulez ici, plus rapide que regex et plus flexible que substr.

7 votes

@Phil : pas beaucoup plus rapide, à moins qu'il ne soit appelé des milliers de fois. Il faudrait les appeler des millions de fois pour que la différence soit perceptible.

27voto

Darin Dimitrov Points 528142

Le site sous-chaîne vous permet de spécifier l'index de début et de fin :

var str = "xxx_456";
var subStr = str.substring(str.length - 3, str.length);

5voto

ghostdog74 Points 86060

Vous pouvez juste le diviser et obtenir le dernier élément

var string="xxx_456";
var a=string.split("_");
alert(a[1]); #or a.pop

1 votes

+1, j'aurais fourni la méthode split-pop dans ma propre réponse si vous ne l'aviez pas mentionnée :-)

4voto

user187291 Points 28951
alert("xxxxxxxxxxx_456".substr(-3))

avertissement : selon mdc non compatible avec IE

3 votes

Mais slice est - voir ma réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X