Удалить первый символ строки в Javascript
Я хочу удалить первый символ строки, если первый символ равен 0. 0 может быть там более одного раза.
Есть ли простая функция, которая проверяет первый символ и удаляет его, если он равен 0?
Сейчас я пытаюсь использовать JS slice()
, но это очень неудобно.
Ответы
Ответ 1
Вы можете удалить первый символ строки, используя 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);
}
Ответ 2
Очень читаемый код - использовать .substring()
с началом, установленным для индекса второго символа (1) (первый символ имеет индекс 0). Второй параметр метода .substring()
фактически необязателен, поэтому вам даже не нужно вызывать .length()
...
TL; DR: удалить первый символ из строки:
str = str.substring(1);
... да, это так просто...
Удаление определенного символа (ов):
Как предложил @Shaded, просто зациклируйте это, в то время как первый символ вашей строки является "нежелательным" символом...
var yourString = "0000test";
var unwantedCharacter = "0";
//there is really no need for === check, since we use String charAt()
while( yourString.charAt(0) == unwantedCharacter ) yourString = yourString.substr(1);
//yourString now contains "test"
.slice()
vs .substring()
vs .substr()
Цитата из (и многое другое об этом) В чем разница между String.slice и String.substring?
Он также указывает, что если параметры среза отрицательные, они ссылайтесь на строку с конца. Подстрока и substr не являются.
Ответ 3
Используйте .charAt()
и .slice()
.
Пример: http://jsfiddle.net/kCpNQ/
var myString = "0String";
if( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
Если в начале может быть несколько символов 0
, вы можете изменить if()
на a while()
.
Пример: http://jsfiddle.net/kCpNQ/1/
var myString = "0000String";
while( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
Ответ 4
Самый простой способ снять все ведущие 0
:
var s = "00test";
s = s.replace(/^0+/, "");
Если просто удалить один ведущий символ 0
, как следует из вопроса, вы можете использовать
s = s.replace(/^0/, "");
Ответ 5
Вы можете сделать это с помощью метода подстроки :
let a = "My test string";
a = a.substring(1);
console.log(a); // y test string
Ответ 6
Вы попробовали функцию 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);
}
Ответ 7
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();
Ответ 8
//---- 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));
Ответ 9
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);
Ответ 10
Здесь тот, который не предполагает ввода, является string
, использует substring
и поставляется с несколькими модульными тестами:
var cutOutZero = function(value) {
if (value.length && value.length > 0 && value[0] === '0') {
return value.substring(1);
}
return value;
};
http://jsfiddle.net/TRU66/1/
Ответ 11
пытаться
s.replace(/^0/,'')
console.log("0string =>", "0string".replace(/^0/,'') );
console.log("00string =>", "00string".replace(/^0/,'') );
console.log("string00 =>", "string00".replace(/^0/,'') );
Ответ 12
var test = '0test';
test = test.replace(/0(.*)/, '$1');
Ответ 13
Из реализации 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,'');
}
}