Respuestas:
Puede eliminar el primer carácter de una cadena usando substr
:
var s1 = "foobar";
var s2 = s1.substr(1);
alert(s2); // shows "oobar"
Para eliminar todos los 0 al comienzo de la cadena:
var s = "0000test";
while(s.charAt(0) === '0')
{
s = s.substr(1);
}
===
y ==
realizar exactamente los mismos pasos (de acuerdo con la especificación, por lo menos), así que no hay razón para esperar un mejor desempeño que el otro .
substr
por substring
. Consulte MDN: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Se debe usar .substring()
un código muy legible con un inicio establecido en el índice del segundo carácter (1) (el primer carácter tiene índice 0). El segundo parámetro del .substring()
método es realmente opcional, por lo que ni siquiera necesita llamar .length()
...
str = str.substring(1);
...sí, es así de simple...
Como sugirió @Shaded, simplemente repita esto mientras el primer carácter de su cadena es el carácter "no deseado" ...
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()
Cita de (y más sobre eso en) ¿Cuál es la diferencia entre String.slice y String.substring?
También señala que si los parámetros para cortar son negativos, hacen referencia a la cadena desde el final. Subcadena y subcadena no.
Ejemplo: http://jsfiddle.net/kCpNQ/
var myString = "0String";
if( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
Si puede haber varios 0
caracteres al principio, puede cambiar el if()
a a while()
.
Ejemplo: http://jsfiddle.net/kCpNQ/1/
var myString = "0000String";
while( myString.charAt( 0 ) === '0' )
myString = myString.slice( 1 );
¿Probaste la substring
función?
string = string.indexOf(0) == '0' ? string.substring(1) : string;
Aquí hay una referencia: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/substring
Y siempre puedes hacer esto para múltiples ceros:
while(string.indexOf(0) == '0')
{
string = string.substring(1);
}
var s = "0test";
if(s.substr(0,1) == "0") {
s = s.substr(1);
}
Para todos los 0
s: http://jsfiddle.net/An4MY/
String.prototype.ltrim0 = function() {
return this.replace(/^[0]+/,"");
}
var s = "0000test".ltrim0();
charAt
? ¿Por qué los corchetes? ¿Por qué una extensión prototipo? Yuck
//---- 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);
Aquí hay uno que no asume que la entrada es a string
, usa substring
y viene con un par de pruebas unitarias:
var cutOutZero = function(value) {
if (value.length && value.length > 0 && value[0] === '0') {
return value.substring(1);
}
return value;
};
Desde la implementación de Javascript de trim ()> que elimina espacios iniciales y finales de las cadenas. Aquí hay una implementación alterada de la respuesta a esta pregunta.
var str = "0000one two three0000"; //TEST
str = str.replace(/^\s+|\s+$/g,'0'); //ANSWER
Implementación original para esto en JS
string.trim():
if (!String.prototype.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,'');
}
}
charAt
siempre devuelve una cadena, incluso si el índice excede el índice del último carácter, por lo que no se realiza una coerción de tipo y el algoritmo termina siendo idéntico. Pero yo prefiero===
más==
aún cuando no hace una diferencia. ;)