422 votes

scinde une chaîne uniquement sur la première instance de caractères spécifié

Dans mon code j'ai découper une chaîne basée sur _ et de saisir le deuxième élément dans le tableau.

var element = $(this).attr('class');
var field = element.split('_')[1];

Prend good_luck et me fournit luck. Fonctionne très bien!

Mais, maintenant, j'ai une classe qui ressemble good_luck_buddy. Comment puis-je obtenir mon javascript pour ignorer le second _ et de me donner des luck_buddy?

J'ai trouvé cette var field = element.split(new char [] {'_'}, 2); en c# stackoverflow réponse, mais il ne fonctionne pas. Je l'ai essayé sur au jsFiddle...

606voto

Mark F Points 3779

Utiliser le gourmand opérateur (?)

"good_luck_buddy".split(/_(.+)?/)[1]
"luck_buddy"

296voto

kennebec Points 33886

De quoi avez-vous besoin d'expressions régulières et des tableaux?

var string= string.substring(string.indexOf('_')+1)

72voto

yonas Points 49

- Je éviter les RegExp à tout prix. Voici une autre chose que vous pouvez faire:

"good_luck_buddy".split('_').slice(1).join('_')

16voto

Chandu Points 40028

Vous pouvez utiliser l'expression régulière comme:

var arr = element.split(/_(.*)/)
Vous pouvez utiliser le deuxième paramètre qui définit la limite de la rupture. j'.e: var field = élément.split('_', 1)[1];

4voto

Alex Vidal Points 2661

Javascript String.split a malheureusement aucun moyen de limiter le nombre de divisions. Il y a un second argument qui spécifie combien de réelles diviser les éléments sont retournés, ce qui n'est pas utile dans ton cas. La solution serait de diviser la chaîne, déplacer le premier élément, puis de rejoindre le reste des articles::

var element = $(this).attr('class');
var parts = element.split('_');

parts.shift(); // removes the first item from the array
var field = parts.join('_');

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