Supprimer le premier caractère D'une chaîne dans Javascript
je veux supprimer le premier caractère d'une chaîne, si le premier caractère est 0. Le 0 peut être là plus d'une fois.
y a-t-il une fonction simple qui vérifie le premier caractère et l'efface s'il est 0?
en ce moment, je l'essaie avec la fonction JS slice()
mais c'est très embarrassant.
12 réponses
var s = "0000test";
while(s.charAt(0) === '0')
{
s = s.substr(1);
}
cela tuera n'importe quel 0 Au début de la chaîne.
Code très lisible est d'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, donc vous n'avez même pas besoin d'appeler .length()
...
TL; DR: supprimer le premier caractère de la chaîne de caractères:
str = str.substring(1);
...oui c'est aussi simple que cela...
supprimant un élément particulier caractère (s):
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" non désiré"...
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()
Citation de (et plus) Quelle est la différence entre la Chaîne.tranche et de la Corde.substring?
Il souligne également que si les paramètres de tranche sont négatif, ils référence de la chaîne de la fin. Sous-couche et sous-couche.
utiliser .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 changer le if()
en while()
.
exemple: http://jsfiddle.net/kCpNQ/1/
var myString = "0000String";
while( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
la façon la plus facile de rayer tous les conducteurs 0
s est:
var s = "00test";
s = s.replace(/^0+/, "");
si vous supprimez un seul caractère de tête 0
, comme la question l'indique, vous pouvez utiliser
s = s.replace(/^0/, "");
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 faire ceci 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 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));
Que Diriez-vous de
let a = "My test string";
a = a.substring(1, a.length);
console.log(a); // y test string
voici un qui ne suppose pas que l'entrée est un string
, utilise substring
, et est livré avec un couple de tests unitaires:
var cutOutZero = function(value) {
if (value.length && value.length > 0 && value[0] === '0') {
return value.substring(1);
}
return value;
};
C'est peut-être un peu exagérer mais bon je m'ennuyais.
String.prototype.deleteAt = function (index, predicate) {
var c = this[+index];
if (!predicate || predicate(c)) {
var before = this.substring(0, Math.max(index - 1, 0));
var after = this.substring(Math.min(index + 1, this.length - 1));
return before + after;
}
return this;
}
var str = "0ABC";
var newStr = str.deleteAt(0, function (c) {
return c === '0';
});
cette version peut être plus utile pour vous cependant.
String.prototype.trimStartWhile = function (predicate) {
if (typeof predicate !== "function") {
return this;
}
var str = this;
while (str.length > 0 && predicate(this[0])) {
str = str.substring(1);
}
return str;
}
var str = "0ABC";
var newStr = str.trimStartWhile(function (c) {
return c === '0';
});
de l'implémentation Javascript de trim() > qui supprime et dirige ou termine les espaces des chaînes. Voici une mise en œuvre modifiée de la réponse à cette question.
var str = "0000one two three0000"; //TEST
str = str.replace(/^\s+|\s+$/g,'0'); //ANSWER
Origine de la mise en œuvre de ce sur JS
string.trim():
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,'');
}
}