我的情况是,如果用户输入例如000.03
,我想将其显示为.03
而不是000.03
。我怎么能用Javascript做到这一点?
答案 0 :(得分:2)
这实际上比最初看起来更棘手。删除前导零不是标准Javascript。我在网上找到了这个优雅的解决方案并进行了一些编辑。
function removeLeadingZeros(strNumber)
{
while (strNumber.substr(0,1) == '0' && strNumber.length>1)
{
strNumber = strNumber.substr(1);
}
return strNumber;
}
userInput = "000.03";
alert(removeLeadingZeros(userInput));
答案 1 :(得分:2)
您可以使用正则表达式:
"000.03".replace(/^0+\./, ".");
根据自己的喜好调整。
答案 2 :(得分:1)
此函数将接受任何字符串并尝试将其解析为数字,然后按照您描述的方式对其进行格式化:
function makePretty(userInput) {
var num,
str;
num = parseFloat(userInput); // e.g. 0.03
str = userInput.toString();
if (!isNaN(num) && str.substring(0, 1) === '0') {
str = str.substring(1); // e.g. .03
} else if (isNaN(num)) {
str = userInput; // it’s not a number, so just return the input
}
return str;
}
makePretty('000.03'); // '.03'
makePretty('020.03'); // '20.03'
你把它无法解析为数字的东西喂它,它会把它还给它。
更新:哦,我看到如果还需要删除单个前导零。更新了代码。
答案 3 :(得分:1)
怎么样:
function showRounded(val) {
var zero = parseInt(val.split('.')[0],10) === 0;
return zero ? val.substring(val.indexOf('.')) : val.replace(/^0+/,'') );
}
console.log(showRounded('000.03')); //=> ".03"
console.log(showRounded('900.03')); //=> "900.03"
console.log(showRounded('009.03')); //=> "9.03"
或者调整ÁlvaroG。Vicario的解决方案以摆脱领先的零点:
String(parseFloat("090.03")).replace(/^0+\./, ".")
答案 4 :(得分:0)
假设您的输入格式相同,并且您想要显示.
user = "000.03";
user = user.substring(3);
答案 5 :(得分:0)
您可以将字符串转换为数字并将其转换为字符串,以将其格式化为"0.03"
:
var input = "000.03";
var output = (+input).toString(); // "0.03"
要摆脱任何前导零(例如“.03”),你可以这样做:
var input = "000.03";
var output = input.substr(input.indexOf(".")); // ".03"
然而,这不正确地将“20.30”剥离为“.30”。您可以结合前两种方法来解决这个问题:
var input = "000.03";
var output = Math.abs(+input) < 1 ?
input.substr(input.indexOf(".")) :
(+"000.03").toString();