Sugerir una solución para eliminar o truncar los ceros iniciales del número (cualquier cadena) mediante javascript, jquery.
javascript
jquery
numbers
zero
Somnath Muluk
fuente
fuente
'00000.5'
)?Respuestas:
Puede utilizar una expresión regular que coincida con ceros al principio de la cadena:
s = s.replace(/^0+/, '');
fuente
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"
fuente
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
fuente
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í.
fuente
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>
fuente
false
. No es necesario el uso de9999
como segundo parámetro desubstr
. Solo usawhile (s.substr(0,1) == '0') s = s.substr(1);
. Además, ese fragmento de código parece muy antiguo, ellanguage
atributo de lascript
etiqueta ha sido obsoleto durante mucho tiempo y el uso de comentarios dentro de lasscript
etiquetas solo es necesario para los navegadores que no entienden lascript
etiqueta en absoluto, por ejemplo, Internet Explorer 1.0.parseInt(value) or parseFloat(value)
Esto funcionará muy bien.
fuente
Prueba esto,
function ltrim(str, chars) { chars = chars || "\\s"; return str.replace(new RegExp("^[" + chars + "]+", "g"), ""); } var str =ltrim("01545878","0");
Más aquí
fuente
Simplemente intente multiplicar por uno de la siguiente manera:
fuente
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
fuente
Si el número es int use
"" + parseInt(str)
Si el número es flotante, use
"" + parseFloat(str)
fuente
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 )
fuente
const input = '0093'; const match = input.match(/^(0+)(\d+)$/); const result = match && match[2] || input;
fuente