简体   繁体   English

输入字段值 - 删除前导零

[英]Input field value - remove leading zeros

I have a textbox in Javascript. 我在Javascript中有一个文本框。 When I enter '0000.00' in the textbox, I want to know how to convert that to only having one leading zero, such as '0.00' . 当我在文本框中输入'0000.00'时,我想知道如何将其转换为只有一个前导零,例如'0.00'

More simplified solution is as below. 更简化的解决方案如下。 Check this out! 看一下这个!

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);

It sounds like you just want to remove leading zeros unless there's only one left ("0" for an integer or "0.xxx" for a float, where x can be anything). 听起来你只想删除前导零,除非只剩下一个(整数为“0”或浮点数为“0.xxx”,其中x可以是任何东西)。

This should be good for a first cut: 这对于第一次切割应该是好的:

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)
}

Ok a simple solution. 好的简单解决方案。 The only problem is when the string is "0000.00" result in plain 0. But beside that I think is a cool solution. 唯一的问题是,当字符串为“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

For some cases I think this can work... 在某些情况下,我认为这可行...

You can use this 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>

试试这个:

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

You can use a regex to replace the leading zeroes with a single one: 您可以使用正则表达式将前导零替换为单个零:

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"

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

Replaces with: <same sign if available><the part of the string after the sequence of zeroes> 替换为: <same sign if available><the part of the string after the sequence of zeroes>

  • ^ is the beginning of text ^是文本的开头

  • ? means optional (refers to the previous character) 表示可选(指前一个字符)

  • (a|b) means either a or b (a | b)表示a或b

  • . is the dot (escaped as . has a special meaning) 是点(转义为。具有特殊含义)

  • \\d is any digit \\ d是任何数字

  • $1 means what you found in the first set of () $ 1表示你在第一组中发现的()

  • $2 means what you found in the second set of () $ 2表示你在第二组中找到的()

在此输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM