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.
var s = "0000test";
while(s.charAt(0) === '0')
{
s = s.substr(1);
}
Cela tue les 0 au début de la chaîne.
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()
...
str = str.substring(1);
...Oui, il est aussi simple que cela...
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.
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 );
Le moyen le plus simple de supprimer tous les 0
s 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/, "");
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
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);
}
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();
//---- 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));
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;
};
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);
essayer
s.replace(/^0/,'')
console.log("0string =>", "0string".replace(/^0/,'') );
console.log("00string =>", "00string".replace(/^0/,'') );
console.log("string00 =>", "string00".replace(/^0/,'') );
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,'');
}
}
var test = '0test';
test = test.replace(/0(.*)/, '$1');