Suggérer une solution pour supprimer ou tronquer les zéros de chiffre (toutes les chaînes) par javascript, jquery.
Vous pouvez utiliser une expression régulière qui correspond aux zéros au début de la chaîne:
s = s.replace(/^0+/, '');
Je voudrais utiliser la fonction Number ():
var yourString = "00001";
yourString = Number(yourString).toString();
Peut-être un peu tard, mais je veux ajouter mes 2 cents.
si votre chaîne représente TOUJOURS un nombre, avec des zéros non significatifs, vous pouvez simplement convertir la chaîne en un nombre à l'aide de l'opérateur '+'.
par exemple.
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 votre chaîne ne représente pas un nombre et qu'il vous suffit de supprimer les 0, utilisez les autres solutions, mais si vous n'en avez besoin que d'un nombre, c'est le moyen le plus court.
et FYI vous pouvez faire l’opposé, forcer les nombres à agir comme des chaînes si vous leur concaténer une chaîne vide, comme:
x = 5;
alert(typeof x); //number
x = x+"";
alert(typeof x); //string
j'espère que ça aide quelqu'un
Puisque vous avez dit "n'importe quelle chaîne", je suppose que vous souhaitez également gérer cette chaîne.
"00012 34 0000432 0035"
Alors, regex est la voie à suivre:
var trimmed = s.replace(/\b0+/g, "");
Et cela évitera la perte d'une valeur "000000".
var trimmed = s.replace(/\b(0(?!\b))+/g, "")
Vous pouvez voir un exemple de travail ici
J'ai eu cette solution pour tronquer les zéros de gauche (nombre ou n'importe quelle chaîne) 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>
parseInt(value) or parseFloat(value)
Cela fonctionnera bien.
Essaye ça,
function ltrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
var str =ltrim("01545878","0");
Plus ici
Vous devez utiliser le paramètre "radix" de la fonction "parseInt": https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt?redirectlocale=en- US & redirectlug = JavaScript% 2FReference% 2FGlobal_Objects% 2FparseInt
parseInt ('015', 10) => 15
si vous ne l'utilisez pas, certains moteurs javascript pourraient l'utiliser sous forme octale parseInt ('015') => 0
Si nombre est int utilisation
"" + parseInt(str)
Si le nombre est float, utilisez
"" + parseFloat(str)
Essayez simplement de multiplier par un comme suit:
"00123" * 1; // Obtenir en tant que nombre
"00123" * 1 + ""; // Obtenir en tant que chaîne
Un autre moyen sans regex:
function trimLeadingZerosSubstr(str) {
var xLastChr = str.length - 1, xChrIdx = 0;
while (str[xChrIdx] === "0" && xChrIdx < xLastChr) {
xChrIdx++;
}
return xChrIdx > 0 ? str.substr(xChrIdx) : str;
}
Avec une chaîne courte, ce sera plus rapide que regex ( jsperf )
const input = '0093';
const match = input.match(/^(0+)(\d+)$/);
const result = match && match[2] || input;