在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不是。
你有没有尝试substring
function?
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; };
//---- 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,''); } }