【发布时间】:2011-06-01 15:41:59
【问题描述】:
如果第一个字符是 0,我想删除字符串的第一个字符。0 可以多次出现。
有没有简单的函数检查第一个字符,如果是0就删除它?
现在,我正在尝试使用 JS slice() 函数,但它非常尴尬。
【问题讨论】:
标签: javascript string
如果第一个字符是 0,我想删除字符串的第一个字符。0 可以多次出现。
有没有简单的函数检查第一个字符,如果是0就删除它?
现在,我正在尝试使用 JS slice() 函数,但它非常尴尬。
【问题讨论】:
标签: javascript string
一个简单的解决方案是使用splice()方法,并将1作为参数传递
let str = "khattak01"
let resStr = str.slice(1)
console.log(resStr)
结果:hattak01
【讨论】:
const string = '0My string';
const result = string.substring(1);
console.log(result);
您可以使用 substring() javascript 函数。
【讨论】:
示例: 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(),并将开始设置为第二个字符的索引 (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.substring(1);
//yourString now contains "test"
.slice() vs .substring() vs .substr()编辑: substr() 没有标准化,不应该用于新的 JS 代码,由于与其他语言的命名相似,您可能倾向于使用它,例如PHP,但即使在 PHP 中,您也应该使用 mb_substr() 以确保在现代世界中的安全:)
引用自What is the difference between String.slice and String.substring?(以及更多内容)What is the difference between String.slice and String.substring?
他还指出,如果要切片的参数是负数,它们 从末尾引用字符串。子字符串和子字符串没有。
【讨论】:
您可以使用substring 删除字符串的第一个字符:
var s1 = "foobar";
var s2 = s1.substring(1);
alert(s2); // shows "oobar"
删除字符串开头的所有 0:
var s = "0000test";
while(s.charAt(0) === '0')
{
s = s.substring(1);
}
【讨论】:
charAt 总是返回一个字符串,即使索引超过了最后一个字符的索引,所以没有执行类型强制,算法最终是相同的。但我确实更喜欢=== 而不是==,即使它没有任何区别。 ;)
=== 和== 执行完全相同的步骤(至少根据规范),所以没有理由期望一个比另一个表现更好。
substr 替换为substring。查看 MDN:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
删除后获取第一个字符的另一种方法:
// Example string
let string = 'Example';
// Getting the first character and updtated string
[character, string] = [string[0], string.substr(1)];
console.log(character);
// 'E'
console.log(string);
// 'xample'
【讨论】:
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);
【讨论】:
你可以用substring方法做到这一点:
let a = "My test string";
a = a.substring(1);
console.log(a); // y test string
【讨论】:
试试
s.replace(/^0/,'')
console.log("0string =>", "0string".replace(/^0/,'') );
console.log("00string =>", "00string".replace(/^0/,'') );
console.log("string00 =>", "string00".replace(/^0/,'') );
【讨论】:
//---- 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));
【讨论】:
来自 trim() 的 Javascript 实现 > 从字符串中删除和前导或结束空格。这是此问题答案的更改实现。
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,'');
}
}
【讨论】:
去除所有前导0s 的最简单方法是:
var s = "00test";
s = s.replace(/^0+/, "");
如果只是剥离一个前导 0 字符,正如问题所暗示的那样,您可以使用
s = s.replace(/^0/, "");
【讨论】:
你试过substring函数吗?
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);
}
【讨论】:
这是一个不假设输入是string,使用substring,并带有几个单元测试:
var cutOutZero = function(value) {
if (value.length && value.length > 0 && value[0] === '0') {
return value.substring(1);
}
return value;
};
【讨论】:
var test = '0test';
test = test.replace(/0(.*)/, '$1');
【讨论】:
var s = "0test";
if(s.substr(0,1) == "0") {
s = s.substr(1);
}
对于所有0s:http://jsfiddle.net/An4MY/
String.prototype.ltrim0 = function() {
return this.replace(/^[0]+/,"");
}
var s = "0000test".ltrim0();
【讨论】:
charAt?为什么是括号?为什么要原型扩展?糟糕。