Sugerir una solución para eliminar o truncar los ceros iniciales del número (cualquier cadena) mediante javascript, jquery.
'00000.5'
)?
Sugerir una solución para eliminar o truncar los ceros iniciales del número (cualquier cadena) mediante javascript, jquery.
'00000.5'
)?
Respuestas:
Puede utilizar una expresión regular que coincida con ceros al principio de la cadena:
s = s.replace(/^0+/, '');
Usaría la función Number ():
var str = "00001";
str = Number(str).toString();
>> "1"
O multiplicaría mi cuerda por 1
var str = "00000000002346301625363";
str = (str * 1).toString();
>> "2346301625363"
Quizás un poco tarde, pero quiero agregar mis 2 centavos.
si su cadena SIEMPRE representa un número, con posibles ceros a la izquierda, puede simplemente convertir la cadena en un número usando el operador '+'.
p.ej
x= "00005";
alert(typeof x); //"string"
alert(x);// "00005"
x = +x ; //or x= +"00005"; //do NOT confuse with x+=x, which will only concatenate the value
alert(typeof x); //number , voila!
alert(x); // 5 (as number)
si su cadena no representa un número y solo necesita eliminar los 0, use las otras soluciones, pero si solo las necesita como número, esta es la forma más corta.
y para su información, puede hacer lo contrario, obligar a los números a actuar como cadenas si concatena una cadena vacía con ellos, como:
x = 5;
alert(typeof x); //number
x = x+"";
alert(typeof x); //string
espero que ayude a alguien
Como dijiste "cualquier cadena", supongo que esta es una cadena que también quieres manejar.
"00012 34 0000432 0035"
Entonces, regex es el camino a seguir:
var trimmed = s.replace(/\b0+/g, "");
Y esto evitará la pérdida de un valor "000000".
var trimmed = s.replace(/\b(0(?!\b))+/g, "")
Puedes ver un ejemplo de trabajo aquí.
Obtuve esta solución para truncar ceros a la izquierda (número o cualquier cadena) en javascript:
<script language="JavaScript" type="text/javascript">
<!--
function trimNumber(s) {
while (s.substr(0,1) == '0' && s.length>1) { s = s.substr(1,9999); }
return s;
}
var s1 = '00123';
var s2 = '000assa';
var s3 = 'assa34300';
var s4 = 'ssa';
var s5 = '121212000';
alert(s1 + '=' + trimNumber(s1));
alert(s2 + '=' + trimNumber(s2));
alert(s3 + '=' + trimNumber(s3));
alert(s4 + '=' + trimNumber(s4));
alert(s5 + '=' + trimNumber(s5));
// end hiding contents -->
</script>
false
. No es necesario el uso de 9999
como segundo parámetro de substr
. Solo usa while (s.substr(0,1) == '0') s = s.substr(1);
. Además, ese fragmento de código parece muy antiguo, el language
atributo de la script
etiqueta ha sido obsoleto durante mucho tiempo y el uso de comentarios dentro de las script
etiquetas solo es necesario para los navegadores que no entienden la script
etiqueta en absoluto, por ejemplo, Internet Explorer 1.0.
parseInt(value) or parseFloat(value)
Esto funcionará muy bien.
Prueba esto,
function ltrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
var str =ltrim("01545878","0");
Más aquí
Simplemente intente multiplicar por uno de la siguiente manera:
"00123" * 1; // Obtener como número
"00123" * 1 + ""; // Obtener como cadena
Debe utilizar el parámetro "radix" de la función "parseInt": https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt?redirectlocale=en-US&redirectslug=JavaScript%2FReference % 2FGlobal_Objects% 2FparseInt
parseInt ('015', 10) => 15
si no lo usa, algún motor javascript podría usarlo como un parseInt octal ('015') => 0
De otra forma sin expresiones regulares:
function trimLeadingZerosSubstr(str) {
var xLastChr = str.length - 1, xChrIdx = 0;
while (str[xChrIdx] === "0" && xChrIdx < xLastChr) {
xChrIdx++;
}
return xChrIdx > 0 ? str.substr(xChrIdx) : str;
}
Con una cadena corta será más rápido que regex ( jsperf )