Mam pole tekstowe w JavaScript. Kiedy wpisuję '0000.00'
w polu tekstowym, chcę wiedzieć, jak przekonwertować to tylko do jednego wiodącego zera, takiego jak '0.00'
.Skróć początkowe zera ciągu znaków w JavaScript
Odpowiedz
Spróbuj tego:
<input type="text" onblur="this.value=this.value.replace(/^0+(?=\d\.)/, '')">
var value= document.getElementById("theTextBoxInQuestion").value;
var number= parseFloat(value).toFixed(2);
Czy powoduje to problemy, jeśli liczba zer po lewej stronie separatora dziesiętnego jest bardzo duża? – Eric
Eric ma rację, zadziała tylko, jeśli masz jedno wiodące zero. Jeszcze więcej i nie. –
Brzmi jak chcesz tylko usunąć zera, chyba że istnieje tylko jedna („0” do liczby całkowitej lub „0.xxx” dla pływaka, gdzie x może być dowolne).
ten powinien być dobry do pierwszego cięcia:
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)
}
To jest dobre rozwiązanie. Opieranie się na wbudowanych funkcjach nie zawsze jest najlepszą opcją. Zamieniam to w funkcję pomocniczą, która pobiera argument łańcuchowy i zwraca sformatowany ciąg znaków. –
Działa bardzo dobrze dla mnie. Chciałbym tylko dodać fragment kodu do obsługi liczb ujemnych (z "-" w pierwszym znaku). – Gaston
Można użyć tego kodu:
<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 proste rozwiązanie. Jedyny problem polega na tym, że napis "0000.00" daje zero. Ale myślę, że jest to fajne rozwiązanie.
var i = "0000.12";
var integer = i*1; //here's is the trick...
console.log(i); //0000.12
console.log(integer);//0.12
Dla niektórych przypadkach myślę, że można to działa ...
- 1. Jak usunąć początkowe i końcowe zera w ciągu znaków? Python
- 2. Jak sformatować ciąg znaków, aby wykluczyć początkowe zera?
- 3. Dynamicznie obliczane wyrównywanie zera w ciągu znaków w pythonie
- 4. Zastępowanie wiodących znaków w ciągu znaków
- 5. usunąć dodatkowe spacje w ciągu znaków javascript
- 6. zliczanie częstotliwości znaków w ciągu znaków przy użyciu javascript
- 7. Usuwanie znaków z ciągu znaków
- 8. Początkowe tablice JavaScript i licznik
- 9. Usuń zakładkę ('\ t') z ciągu znaków javascript
- 10. Cofanie słów w ciągu znaków
- 11. Zdobądź pierwszą literę każdego słowa w ciągu znaków, w JavaScript
- 12. W JavaScript/regex, jak usunąć podwójne spacje w ciągu znaków?
- 13. Skróć kolekcję
- 14. Jak wymienić ostatnie wystąpienie znaków w ciągu przy użyciu javascript
- 15. Używając JavaScript, aby znaleźć najczęstsze słowa w ciągu znaków?
- 16. JavaScript: Jak zdobyć pierwsze 4 cyfry w ciągu znaków?
- 17. Wykonaj kod JavaScript zapisany w postaci ciągu znaków
- 18. znajdź brakujące nawiasy klamrowe w ciągu znaków javascript
- 19. Uzyskiwanie ostatniego słowa z ciągu znaków w JavaScript
- 20. Jak wyciągnąć liczbę z ciągu znaków w JavaScript?
- 21. Jak usunąć puste znaki z ciągu znaków w JavaScript?
- 22. JavaScript regex - określona liczba znaków w nieuporządkowanym ciągu
- 23. Dopasowywanie sekwencji kolejnych znaków w ciągu znaków
- 24. Zliczanie liczby znaków w ciągu znaków
- 25. Zastępowanie wielu znaków w ciągu znaków
- 26. Usuwanie białych znaków w ciągu znaków
- 27. Usuwanie białych znaków w ciągu znaków XML
- 28. Sprawdzanie znaków specjalnych w ciągu znaków
- 29. Zamień wiele znaków w ciągu znaków (XSLT)
- 30. JavaScript usunąć początkowe i końcowe spacje
Trzeba wyjaśnić, co to jest „łańcuch” jest. Jeśli twój "ciąg" jest liczbą dziesiętną, wtedy odpowiedź będzie inna, niż jeśli "ciąg" jest ciągiem tekstowym. "00000.000" -> "0,000" będzie konwersją dziesiętną. "000TXT10001" -> "0TXT10001" wymagałoby funkcji przycinania. Na przykład, czego oczekujesz, gdy dane wejściowe to "0011.1100" -> "011.1100" lub "11.11"? – ChronoFish