Удалить первый символ строки в JavaScript
Я хочу, чтобы удалить первый символ строки, если первый символ равен 0. На 0 может быть там более одного раза.
есть простая функция, которая проверяет первый символ и удаляет его, если он равен 0?
прямо сейчас, я пытаюсь его с JS но это очень неудобно.
12 ответов:
var s = "0000test"; while(s.charAt(0) === '0') { s = s.substr(1); }это убьет любые 0 в начале строки.
очень читаемый код использовать
.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's charAt() while( yourString.charAt(0) == unwantedCharacter ) yourString = yourString.substr(1); //yourString now contains "test"
.slice()vs.substring()vs.substr()цитата из (и на что) в чем разница между строкой.кусочек и строка.подстрока?
он также указывает, что если параметры для среза отрицательны, они ссылка на строку с конца. Подстрока и 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 );
самый простой способ лишить всех ведущих
0s это:var s = "00test"; s = s.replace(/^0+/, "");если только зачистка одного ведущего
0характер, как следует из вопроса, Вы могли бы использоватьs = s.replace(/^0/, "");
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();
//---- 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; };
Это может быть немного перебор, но мне было скучно.
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'; });
из реализации 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,''); } }
Comments