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'
.
La solution plus simplifiée est comme ci-dessous. Regarde ça!
var resultString = document.getElementById("theTextBoxInQuestion")
.value
.replace(/^[0]+/g,"");
str.replace(/^0+(?!\.|$)/, '')
'0000.00' --> '0.00'
'0.00' --> '0.00'
'00123.0' --> '123.0'
'0' --> '0'
var value= document.getElementById("theTextBoxInQuestion").value;
var number= parseFloat(value).toFixed(2);
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)
}
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>
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 ...
Essaye ça:
<input type="text" onblur="this.value=this.value.replace(/^0+(?=\d\.)/, '')">
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 ()