Ich habe ein Textfeld in Javascript. Wenn ich in das Textfeld '0000.00'
eingeben, möchte ich wissen, wie man das umwandelt, um nur eine führende Null zu haben, wie .Trunk führende Nullen einer Zeichenfolge in Javascript
Antwort
Versuchen Sie folgendes:
<input type="text" onblur="this.value=this.value.replace(/^0+(?=\d\.)/, '')">
var value= document.getElementById("theTextBoxInQuestion").value;
var number= parseFloat(value).toFixed(2);
Hat dies Probleme, wenn die Anzahl der Nullen links von der Dezimalstelle sehr groß ist? – Eric
Eric hat einen Punkt, es funktioniert nur, wenn Sie eine führende Null haben. Mehr als das und scheitern. –
Es klingt wie Sie nur führende Nullen entfernt werden soll, es sei denn es gibt nur eine linke („0“ für eine ganze Zahl oder „0.xxx“ für einen Schwimmer, wo x kann alles sein).
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)
}
Dies ist eine gute Lösung. Es ist nicht immer die beste Option, sich auf integrierte Funktionen zu verlassen. Ich würde dies in eine Hilfsfunktion umwandeln, die ein String-Argument nimmt und die formatierte Zeichenkette zurückgibt. –
Funktioniert sehr gut für mich. Ich würde nur empfehlen, ein Stück Code hinzuzufügen, um negative Zahlen zu unterstützen (mit "-" im ersten Zeichen). – Gaston
einfachere Lösung ist wie folgt:
für einen ersten Schnitt gut Dies sollte. Sieh dir das an!
var resultString = document.getElementById("theTextBoxInQuestion")
.value
.replace(/^[0]+/g,"");
können Sie diesen Code verwenden:
<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>
str.replace(/^0+(?!\.|$)/, '')
'0000.00' --> '0.00'
'0.00' --> '0.00'
'00123.0' --> '123.0'
'0' --> '0'
Ok eine einfache Lösung. Das einzige Problem ist, wenn die Zeichenkette "0000.00" ergibt, in Ebene 0. Aber daneben denke ich ist eine coole Lösung.
var i = "0000.12";
var integer = i*1; //here's is the trick...
console.log(i); //0000.12
console.log(integer);//0.12
Für einige Fälle denke ich, das funktionieren kann ...
müssen klären, was ein „string“ ist. Wenn Ihre "Zeichenkette" eine Dezimalzahl ist, dann ist die Antwort anders, als wenn Ihre "Zeichenkette" eine Textzeichenfolge ist. "00000.000" -> "0.000" wäre eine Dezimalumwandlung. "000TXT10001" -> "0TXT10001" würde eine Trimmfunktion erfordern. Was erwarten Sie beispielsweise, wenn der Eingang "0011.1100" -> "011.1100" oder "11.11" ist? – ChronoFish