web-dev-qa-db-fra.com

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

Je veux supprimer le premier caractère d'une chaîne, 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 s'agit de 0?

En ce moment, je l’essaye avec la fonction JS slice() mais c’est très gênant.

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

Cela tue les 0 au début de la chaîne.

574
Shaded

Un code très lisible est à utiliser .substring() avec un début défini à l'index du deuxième caractère (1) (le premier caractère a l'index 0). Le deuxième paramètre de la méthode .substring() est en fait facultatif, vous n'avez donc même pas besoin d'appeler .length()...

TL; DR: supprime le premier caractère de la chaîne:

str = str.substring(1);

...Oui, il est aussi simple que cela...

Suppression de certains caractères particuliers:

Comme @Shaded l'a suggéré, il suffit de boucler cette boucle alors que le premier caractère de votre chaîne est le caractère "indésirable" ...

var yourString = "0000test";
var unwantedCharacter = "0";
//there is really no need for === check, since we use String's charAt()
while( yourString.charAt(0) == unwantedCharacter ) yourString = yourString.substr(1);
//yourString now contains "test"

.slice() vs .substring() vs .substr()

Citer de (et plus sur cela dans) Quelle est la différence entre String.slice et String.substring?

Il souligne également que si les paramètres à découper sont négatifs, ils référencent la chaîne à partir de la fin. La sous-chaîne et la sous-chaîne ne le sont pas.

157
jave.web

Utilisez .charAt() et .slice() .

Exemple: http://jsfiddle.net/kCpNQ/

var myString = "0String";

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

S'il peut y avoir plusieurs caractères 0 au début, vous pouvez modifier la if() en une while().

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

var myString = "0000String";

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

Le moyen le plus simple de supprimer tous les 0s suivants est le suivant:

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

Si vous supprimez simplement un caractère 0 principal, comme le suggère la question, vous pouvez utiliser

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

Vous pouvez le faire avec la méthode sous-chaîne :

let a = "My test string";

a = a.substring(1);

console.log(a); // y test string
21
Andrew

Avez-vous essayé la fonction substring?

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 le faire pour plusieurs 0:

while(string.indexOf(0) == '0')
{
    string = string.substring(1);
}
16
adarshr
var s = "0test";
if(s.substr(0,1) == "0") {
    s = s.substr(1);
}

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

String.prototype.ltrim0 = function() {
 return this.replace(/^[0]+/,"");
}
var s = "0000test".ltrim0();
7
zsalzbank
//---- remove first and last char of str    
str = str.substring(1,((keyw.length)-1));

//---- remove only first char    
str = str.substring(1,(keyw.length));

//---- remove only last char    
str = str.substring(0,(keyw.length));
6
bambolobred

En voici un qui ne suppose pas que l'entrée est un string, utilise substring et est livré avec quelques tests unitaires:

var cutOutZero = function(value) {
    if (value.length && value.length > 0 && value[0] === '0') {
        return value.substring(1);
    }

    return value;
};

http://jsfiddle.net/TRU66/1/

3
bdukes
String.prototype.trimStartWhile = function(predicate) {
    if (typeof predicate !== "function") {
        return this;
    }
    let len = this.length;
    if (len === 0) {
        return this;
    }
    let s = this, i = 0;
    while (i < len && predicate(s[i])) {
        i++;
    }
    return s.substr(i)
}

let str = "0000000000ABC",
    r = str.trimStartWhile(c => c === '0');
    
console.log(r);
3
ChaosPandion

essayer

s.replace(/^0/,'')
console.log("0string  =>", "0string".replace(/^0/,'') );
console.log("00string =>", "00string".replace(/^0/,'') );
console.log("string00 =>", "string00".replace(/^0/,'') );
2
Kamil Kiełczewski

De l’implémentation Javascript de trim ()> qui supprime les espaces de début et de fin des chaînes. Voici une implémentation modifiée de la réponse à cette question.

var str = "0000one two three0000"; //TEST  
str = str.replace(/^\s+|\s+$/g,'0'); //ANSWER

Mise en oeuvre originale pour cela sur JS

string.trim():
if (!String.prototype.trim) {
 String.prototype.trim = function() {
  return this.replace(/^\s+|\s+$/g,'');
 }
}
0
fino
var test = '0test';
test = test.replace(/0(.*)/, '$1');
0
kelloti