2009-08-20 11 views
3

J'ai une chaîne "2500 - SomeValue". Comment puis-je supprimer tout ce qui précède le 'S' dans 'SomeValue'?javascript substring help

var x = "2500 - SomeValue"; 
var y = x.substring(x.lastIndexOf(" - "), 
// this is where I'm stuck, I need the rest of the string starting from here. 

Merci pour toute aide.

~ ck

Répondre

7

Ajoutez 3 (la longueur de "-") au dernier index et laissez le second paramètre. La valeur par défaut lorsque vous passez un paramètre à la sous-chaîne aller à la fin de la chaîne

var y = x.substring(x.lastIndexOf(" - ") + 3); 
0
x.substring(x.lastIndexOf(" - "),x.length-1); //corrected 
+0

Cela fait provoquer une erreur d'exécution parce que 'x.length' est passé la fin de la chaîne. Je pense que vous vouliez dire 'x.length - 1'. – Joel

+0

Correct - essayé pour une réponse rapide mais échoué – Andreas

3

C'est juste:

var y = x.substring(x.lastIndexOf(" - ") + 3); 

Lorsque vous omettez le second paramètre, il vous donne juste tout à la fin de la chaîne.

EDIT: Puisque vous vouliez tout de après le "-" J'ai ajouté 3 au point de départ afin d'ignorer ces caractères.

+1

Dans la question, il a demandé tout depuis le "S", en coupant la partie "-". Bien sûr, le code est d'accord avec ce que vous avez. –

+0

Bon point. Edité en conséquence. – VoteyDisciple

0

essayer

var y = x.split(" ",2); 

alors vous aurez un tableau de sous-chaînes. Le troisième y [2] sera ce dont vous avez besoin.

+1

Lorsque vous utilisez 'split (' ', 2)', vous vous retrouverez avec un tableau de 2 éléments maximum, et s'il y a 2 espaces ou plus, le reste sera jeté ... donc cela ne marche pas pour l'exemple ci-dessus. Vous essayez d'utiliser 'String.split (..., maximum)' comme si cela fonctionnait raisonnablement comme dans Python; Malheureusement, JavaScript n'est pas raisonnable. – bobince

+0

Une alternative à l'utilisation de la fonctionnalité split-maximum cassée serait, disons: "x.split ('-') .slice (1) .join ('-')", pour remettre toutes les chaînes '-' supplémentaires. – bobince

0
var y = x.substring(0, x.lastIndexOf(' - ') + 3) 
0

var y = x.slice (x.lastIndexOf ("-"), longueur x - 1);

Cela renverra la valeur sous la forme d'une chaîne quelle que soit sa valeur ou sa durée et qu'elle n'a rien à voir avec les tableaux.

+0

ne coupe pas autoriser -1 comme équivalent à x.length-1? – Jimmy

+0

tranche nécessite une valeur terminale. Si la chaîne est de longueur variable, c'est ainsi que vous trouvez sa longueur pour la mesure statique. Une valeur de -1 ne fonctionnerait pas, car en tant qu'index, la valeur -1 renvoie undefined. Dans ce cas, cela entraînerait probablement une erreur. –