Ответы:
Вы можете удалить первый символ строки, используя 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()против .substring()против.substr()Цитата (и больше об этом в) В чем разница между String.slice и String.substring?
Он также указывает, что если параметры для среза отрицательны, они ссылаются на строку с конца. Substring и substr не имеют.
Используйте .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 );
Вы пробовали substringфункцию?
string = string.indexOf(0) == '0' ? string.substring(1) : string;
Вот ссылка - https://developer.mozilla.org/en-US/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: http://jsfiddle.net/An4MY/
String.prototype.ltrim0 = function() {
return this.replace(/^[0]+/,"");
}
var s = "0000test".ltrim0();
charAt? Почему скобки? Почему расширение прототипа? Тьфу.
//---- 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.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;
};
Из реализации JavaScript (trim>), которая удаляет начальные или конечные пробелы из строк. Вот измененная реализация ответа на этот вопрос.
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всегда возвращает строку, даже если индекс превышает индекс последнего символа, поэтому не выполняется приведение типов, и алгоритм в итоге оказывается идентичным. Но я предпочитаю===более ,==даже если он не делает разницы. ;)