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.

286
demandé sur Ry- 2010-12-30 19:39:01

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.

428
répondu Shaded 2017-02-18 20:02:17

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.

92
répondu jave.web 2017-05-23 12:34:51

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 );
76
répondu user113716 2010-12-30 16:48:55

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/, "");
49
répondu Tim Down 2013-10-28 09:36:04

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);
}
14
répondu adarshr 2012-10-24 14:16:44
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();
6
répondu zsalzbank 2010-12-30 16:46:30
//---- 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));
4
répondu bambolobred 2014-03-27 13:47:03

Que Diriez-vous de

let a = "My test string";

a = a.substring(1, a.length);

console.log(a); // y test string
4
répondu Andrew 2017-12-30 22:16:06

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;
};

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

3
répondu bdukes 2010-12-30 16:53:55

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'; 
});
2
répondu ChaosPandion 2010-12-30 16:58:22
var test = '0test';
test = test.replace(/0(.*)/, '');
0
répondu kelloti 2010-12-30 16:46:30

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,'');
 }
}
0
répondu fino 2014-02-03 04:27:32