Answers:
您可以使用删除字符串的第一个字符substr
:
var s1 = "foobar";
var s2 = s1.substr(1);
alert(s2); // shows "oobar"
要删除字符串开头的全0:
var s = "0000test";
while(s.charAt(0) === '0')
{
s = s.substr(1);
}
===
和==
执行完全相同的步骤(根据规范,至少),所以没有理由去期待一个比其他更好的执行。
substr
为来更新您的回复substring
。检查MDN:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
可读性强的代码应.substring()
与设置为第二个字符(1)的索引的开始一起使用(第一个字符的索引为0)。该.substring()
方法的第二个参数实际上是可选的,因此您甚至不需要调用.length()
...
str = str.substring(1);
是的,就是这么简单
正如@Shaded建议的那样,只需在字符串的第一个字符为“不需要的”字符时循环播放即可。
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有什么区别?
他还指出,如果slice的参数为负,则它们将从结尾引用字符串。Substring和substr不会。
示例: 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 );
您是否尝试过该substring
功能?
string = string.indexOf(0) == '0' ? string.substring(1) : string;
这是参考-https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Global_Objects/String/substring
而且,您始终可以多次执行此操作:
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();
charAt
呢?为什么用括号?为什么要扩展原型?uck
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);
这是一个不假定输入为string
,使用substring
且带有几个单元测试的示例:
var cutOutZero = function(value) {
if (value.length && value.length > 0 && value[0] === '0') {
return value.substring(1);
}
return value;
};
从trim()>的Java代码实现中,它删除字符串的开头和结尾或结尾的空格。这是该问题答案的替代实现。
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,'');
}
}
charAt
即使索引超过了最后一个字符的索引,它总是返回一个字符串,因此不会执行任何类型强制转换,并且算法最终是相同的。但是===
,==
即使它没有任何作用,我还是更喜欢。;)