251 votes

Obtenez tout ce qui suit le tiret dans une chaîne de caractères en JavaScript

Quelle serait la façon la plus propre de procéder, qui fonctionnerait à la fois dans IE et dans Firefox ?

Ma chaîne de caractères ressemble à ceci sometext-20202

Maintenant, le sometext et le nombre entier après le tiret peut être de longueur variable.

Devrais-je simplement utiliser substring et indice de ou y a-t-il d'autres moyens ?

394voto

artlung Points 13433

Comment je ferais ça :

// function you can use:
function getSecondPart(str) {
    return str.split('-')[1];
}
// use the function:
alert(getSecondPart("sometext-20202"));

125 votes

N'est-il pas utile de mentionner que cette fonction ne fonctionnera pas si la chaîne est sometext-20202-303 ?

25 votes

@IstiaqueAhmed ça le serait si la question ne portait pas spécifiquement sur un format très précis : "Ma chaîne de caractères ressemble à ceci : sometext-20202"

29 votes

La question avait get everything after the dash in a string in javascript qui, dans ce cas, échouerait.

206voto

Ryan Points 303

Une solution que je préfère serait :

const str = 'sometext-20202';
const slug = str.split('-').pop();

slug serait votre résultat

8 votes

Cette solution est la meilleure si vous travaillez avec plusieurs délimiteurs.

5 votes

Cette solution vous permet d'obtenir tout ce qui se trouve après le dernier dash. Personnellement, j'interprète "tout ce qui se trouve après le tiret" comme tout ce qui se trouve après le premièrement dash, mais cela semble ouvert à l'interprétation.

85voto

Kanke Points 1887
var testStr = "sometext-20202"
var splitStr = testStr.substring(testStr.indexOf('-') + 1);

1 votes

Je pense que c'est assez simple et direct pour ce que j'essayais d'accomplir. Je vous remercie.

5 votes

Contrairement aux deux réponses les plus votées, celle-ci répond correctement à la question posée, à savoir "tout ce qui suit le tiret", même si ce "tout" comporte plusieurs tirets.

32voto

Sean Bright Points 39480
var the_string = "sometext-20202";
var parts = the_string.split('-', 2);

// After calling split(), 'parts' is an array with two elements:
// parts[0] is 'sometext'
// parts[1] is '20202'

var the_text = parts[0];
var the_num  = parts[1];

13voto

Mahyar Ekramian Points 91

Avec javascript intégré replace() et l'utilisation de regex ( /(.*)-/ ), vous pouvez remplacer la sous-chaîne avant le caractère tiret par une chaîne vide ("") :

"sometext-20202".replace(/(.*)-/,""); // result --> "20202"

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