web-dev-qa-db-fra.com

Supprimer/tronquer les zéros de javascript par javascript/jquery

Suggérer une solution pour supprimer ou tronquer les zéros de chiffre (toutes les chaînes) par javascript, jquery.

59
Somnath Muluk

Vous pouvez utiliser une expression régulière qui correspond aux zéros au début de la chaîne:

s = s.replace(/^0+/, '');
141
Guffa

Je voudrais utiliser la fonction Number ():

var yourString = "00001";
yourString = Number(yourString).toString();
21
Charles Hamel

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

11
DiegoDD

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

10
John Fisher

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>
3
Somnath Muluk
parseInt(value) or parseFloat(value)

Cela fonctionnera bien. 

2
Krupall

Essaye ça,

   function ltrim(str, chars) {
        chars = chars || "\\s";
        return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
    }

    var str =ltrim("01545878","0");

Plus ici

2
Gowri

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

1
antoine

Si nombre est int utilisation

"" + parseInt(str)

Si le nombre est float, utilisez

"" + parseFloat(str)
1
loki_dev

Essayez simplement de multiplier par un comme suit:

"00123" * 1; // Obtenir en tant que nombre
"00123" * 1 + ""; // Obtenir en tant que chaîne

1
Siyavash Hamdi

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 )

0
madreason
const input = '0093';
const match = input.match(/^(0+)(\d+)$/);
const result = match && match[2] || input;
0
Boney