Я хочу удалить первый символ строки, если первый символ равен 0. 0 может быть там более одного раза.
Есть ли простая функция, которая проверяет первый символ и удаляет его, если он равен 0?
Прямо сейчас я пробую это с помощью функции JS slice ()
, но это очень неловко.
Вы можете удалить первый символ строки, используя 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);
}
Очень читаемый код должен использовать .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 ()
Цитата из (и более того в) https://stackoverflow.com/questions/2243824/what-is-the-difference-between-string-slice-and-string-substring
Он также указывает, что если параметры среза отрицательны, они ссылка на строку из конца. Подстрока и подстрока не & # 180; т.
Используйте .charAt ()
и . Slice ()
.
Пример:
var myString = "0String";
if( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
Если в начале может быть несколько символов 0
, вы можете изменить if ()
на while ()
.
Пример:
1/var myString = "0000String";
while( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
Самый простой способ избавиться от всех ведущих 0
s - это:
var s = "00test";
s = s.replace(/^0+/, "");
Если вы просто снимаете один ведущий символ «0», как следует из вопроса, вы можете использовать
s = s.replace(/^0/, "");
Вы можете сделать это с помощью метода substring:
let a = "My test string";
a = a.substring(1);
console.log(a); // y test string
Вы пробовали функцию substring
?
string = string.indexOf(0) == '0' ? string.substring(1) : string;
Вот ссылка - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substring
И вы всегда можете сделать это для нескольких 0s:
while(string.indexOf(0) == '0')
{
string = string.substring(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
, использует substring
и поставляется с парой модульных тестов:
var cutOutZero = function(value) {
if (value.length && value.length > 0 && value[0] === '0') {
return value.substring(1);
}
return value;
};
& Лт;!- начать фрагмент: js hide: ложная консоль: истинная павиана: false - >
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);
& Лт;!- конец фрагмента - >
пытаться
s.replace(/^0/,'')
& Лт;!- начать фрагмент: js hide: истинная консоль: истинная павиана: ложная - >
console.log("0string =>", "0string".replace(/^0/,'') );
console.log("00string =>", "00string".replace(/^0/,'') );
console.log("string00 =>", "string00".replace(/^0/,'') );
& Лт;!- конец фрагмента - >
Из реализации 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,'');
}
}