web-dev-qa-db-fra.com

Valeur du champ de saisie - supprimer les zéros de gauche

J'ai une zone de texte en Javascript. Lorsque je saisis '0000.00' dans la zone de texte, je souhaite savoir comment convertir cela en un seul zéro, tel que '0.00'.

37
raja

La solution plus simplifiée est comme ci-dessous. Regarde ça!

var resultString = document.getElementById("theTextBoxInQuestion")
                           .value
                           .replace(/^[0]+/g,"");
47
Umar
str.replace(/^0+(?!\.|$)/, '')

  '0000.00' --> '0.00'   
     '0.00' --> '0.00'   
  '00123.0' --> '123.0'   
        '0' --> '0'  
24
MikeM
var value= document.getElementById("theTextBoxInQuestion").value;
var number= parseFloat(value).toFixed(2);
13
heeen

Il semblerait que vous souhaitiez simplement supprimer les zéros non significatifs, à moins qu'il n'en reste qu'un ("0" pour un entier ou "0.xxx" pour un flottant, où x peut être n'importe quoi).

Cela devrait être bon pour une première coupe:

while (s.charAt(0) == '0') {            # Assume we remove all leading zeros
    if (s.length == 1) { break };       # But not final one.
    if (s.charAt(1) == '.') { break };  # Nor one followed by '.'
    s = s.substr(1, s.length-1)
}
9
paxdiablo

Vous pouvez utiliser ce code:

<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>
5
Somnath Muluk

Ok une solution simple. Le seul problème est que lorsque la chaîne est "0000.00", le résultat est simplement égal à 0. Mais à côté de cela, je pense être une solution intéressante.

var i = "0000.12";
var integer = i*1; //here's is the trick...
console.log(i); //0000.12
console.log(integer);//0.12

Dans certains cas, je pense que cela peut fonctionner ...

4
ncubica

Essaye ça:

<input type="text" onblur="this.value=this.value.replace(/^0+(?=\d\.)/, '')">
2
Gumbo

Vous pouvez utiliser une expression régulière pour remplacer les zéros de tête par un seul:

valueString.replace(/^(-)?0+(0\.|\d)/, '$1$2')

>'-000.0050'.replace(/^(-)?0+(0\.|\d)/, '$1$2')
< "-0.0050"
>'-0010050'.replace(/^(-)?0+(0\.|\d)/, '$1$2')
< "-10050"

Correspondances: <beginning of text><optional minus sign><any sequence of zeroes><either a zero before the dot or another digit>

Remplace par: <same sign if available><the part of the string after the sequence of zeroes>

  • ^ est le début du texte

  • ? signifie optionnel (fait référence au caractère précédent)

  • (a | b) signifie a ou b

  • . est le point (échappé car. a une signification particulière)

  • \ d est n'importe quel chiffre

  • $ 1 signifie ce que vous avez trouvé dans le premier ensemble de ()

  • $ 2 signifie ce que vous avez trouvé dans le deuxième ensemble de ()

 enter image description here

0
Pietro