778 votes

Supprimer le premier caractère d'une chaîne de caractères en Javascript

Je veux supprimer le premier caractère d'une chaîne de caractères, si le premier caractère est un 0. Le 0 peut être présent plusieurs fois.

Existe-t-il une fonction simple qui vérifie le premier caractère et le supprime s'il est égal à 0 ?

Pour l'instant, j'essaye avec le JS slice() mais c'est très gênant.

1266voto

Shaded Points 2948

Vous pouvez supprimer le premier caractère d'une chaîne de caractères en utilisant substring :

var s1 = "foobar";
var s2 = s1.substring(1);
alert(s2); // shows "oobar"

Pour supprimer tous les 0 au début de la chaîne :

var s = "0000test";
while(s.charAt(0) === '0')
{
 s = s.substring(1);
}

12 votes

Stephen : Dans ce cas, ça ne ferait pas de différence car charAt renvoie toujours une chaîne de caractères, même si l'index est supérieur à l'index du dernier caractère. Il n'y a donc pas de coercition de type, et l'algorithme est finalement identique. Mais je préfère === en == même quand cela ne fait pas de différence ;)

1 votes

@user113716 Ne serait-ce pas exactement la raison d'utiliser === pour que javascript n'ait pas à vérifier si les types sont les mêmes ?

0 votes

@Hejner : La différence de performance est négligeable sur les moteurs JS modernes, donc c'est tout à fait inutile. Cela dépend de vos préférences.

103voto

user113716 Points 143363

Utilisez .charAt() y .slice() .

Ejemplo: http://jsfiddle.net/kCpNQ/

var myString = "0String";

if( myString.charAt( 0 ) === '0' )
    myString = myString.slice( 1 );

S'il pouvait y avoir plusieurs 0 au début, vous pouvez modifier le if() à un while() .

Ejemplo: http://jsfiddle.net/kCpNQ/1/

var myString = "0000String";

while( myString.charAt( 0 ) === '0' )
    myString = myString.slice( 1 );

80voto

Tim Down Points 124501

Le moyen le plus simple de supprimer toutes les lignes de tête 0 est :

var s = "00test";
s = s.replace(/^0+/, "");

Si l'on enlève juste une seule tête 0 comme la question l'implique, vous pourriez utiliser le caractère

s = s.replace(/^0/, "");

22voto

adarshr Points 25912

Avez-vous essayé le substring fonction ?

string = string.indexOf(0) == '0' ? string.substring(1) : string;

Voici une référence - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substring

Et vous pouvez toujours faire cela pour plusieurs 0 :

while(string.indexOf(0) == '0')
{
    string = string.substring(1);
}

9voto

zsalzbank Points 5698
var s = "0test";
if(s.substr(0,1) == "0") {
    s = s.substr(1);
}

Pour tous les 0 s : http://jsfiddle.net/An4MY/

String.prototype.ltrim0 = function() {
 return this.replace(/^[0]+/,"");
}
var s = "0000test".ltrim0();

0 votes

Oui, ça marcherait, si un seul 0 est dans la chaîne. Mais j'en ai aussi besoin si la chaîne ressemble à var s = "00test0" ; alors seuls les deux premiers 0 doivent être remplacés.

1 votes

Pourquoi pas ? charAt ? Pourquoi les crochets ? Pourquoi une extension de prototype ? Beurk.

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