在Javascript中删除一个string的第一个字符

如果第一个字符是0,我想删除一个string的第一个字符。0可以在那里不止一次。

是否有一个简单的函数,检查第一个字符,如果它是0删除它?

现在,我正在用JS slice()函数尝试它,但它非常尴尬。

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

这将杀死string开头的任何0。

使用.charAt().slice()

例如: http : //jsfiddle.net/kCpNQ/

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

如果开始时可能有几个0字符,则可以将if()更改为while()

例如: http : //jsfiddle.net/kCpNQ/1/

 var myString = "0000String"; while( myString.charAt( 0 ) === '0' ) myString = myString.slice( 1 ); 

去除所有前导0的最简单的方法是:

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

如果只是剥离一个前导0字符,正如问题所暗示的那样,您可以使用

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

非常可读的代码是使用.substring()开始设置为第二个字符(1)的索引(第一个字符的索引为0)。 .substring()方法的第二个参数实际上是可选的,所以你甚至不需要调用.length()

TL; DR:删除string中的第一个字符:

 str = str.substring(1); 

是的,这是简单的…

删除一些特定的字符:

正如@Shadedbuild议,只是循环此string的第一个字符是“不需要的”字符…

 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()

引用(和更多的) 在String.slice和String.substring有什么区别?

他还指出,如果要切片的参数是负数,则从末尾引用string。 子串和substr不是。

你有没有尝试substringfunction?

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

这里有一个参考 – https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substring

而且你可以一直这样做多个0:

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

对于所有的0 s: http : //jsfiddle.net/An4MY/

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

这是一个不假设input是string ,使用substring ,并带有几个unit testing:

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

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

 //---- 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)); 

这可能有点矫枉过正,但嘿,我很无聊。

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

这个版本可能对你更有用。

 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'; }); 
 var test = '0test'; test = test.replace(/0(.*)/, '$1'); 

从trim()>的Javascript实现,从string中删除和引导或结束空格。 这是这个问题的答案改变的实现。

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

这个在JS上的原始实现

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