У меня есть текстовое поле в Javascript. Когда я ввожу '0000.00'
в текстовое поле, я хочу знать, как преобразовать это в наличие только одного начального нуля, например '0.00'
.
Значение поля ввода - удалить ведущие нули
Ответы (8)
Более упрощенное решение приведено ниже. Проверь это!
var resultString = document.getElementById("theTextBoxInQuestion")
.value
.replace(/^[0]+/g,"");
replace(/^[0]+/g, "0")
- person Andrew Tobilko; 20.08.2016
Похоже, вы просто хотите удалить ведущие нули, если не осталось только одного («0» для целого числа или «0.xxx» для числа с плавающей запятой, где x может быть любым).
Это должно быть хорошо для первого разреза:
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)
}
Вы можете использовать этот код:
<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>
Хорошо, простое решение. Единственная проблема заключается в том, что когда строка "0000.00" приводит к простому 0. Но помимо этого я думаю, что это отличное решение.
var i = "0000.12";
var integer = i*1; //here's is the trick...
console.log(i); //0000.12
console.log(integer);//0.12
В некоторых случаях, я думаю, это может сработать...
Попробуй это:
<input type="text" onblur="this.value=this.value.replace(/^0+(?=\d\.)/, '')">
Вы можете использовать регулярное выражение, чтобы заменить начальные нули одним:
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"
Совпадений: <beginning of text><optional minus sign><any sequence of zeroes><either a zero before the dot or another digit>
Заменяется на: <same sign if available><the part of the string after the sequence of zeroes>
^ — начало текста
? означает необязательный (относится к предыдущему символу)
(a|b) означает либо a, либо b
. это точка (экранированная, поскольку . имеет особое значение)
\d - любая цифра
$1 означает, что вы нашли в первом наборе ()
$2 означает, что вы нашли во втором наборе ()