我想知道是否可以修改此代码,以便将“4,5”和“4.5”(或任何只有十分位的数字)分别呈现为 4.50(或 4,50)......而不是 45 .
我想我需要先测试“源”,看看它是否有格式“x[.,]x”(数字、逗号或句点、数字)但未能成功地做到这一点。我试过使用“toFixed”,但如果它是 4.500 或其他东西(需要渲染为 4500,而不是 4.50!)
任何帮助将不胜感激。谢谢!
function parse(source) {
var sep = source.charAt(source.length - 3);
switch (sep) {
case '.':
case ',':
var parts = source.split(sep);
var norm = parts[0].replace(/(\.|,|\s)/g, '') + '.' + parts[1];
break;
default:
var norm = source.replace(/(\.|,|\s)/g, '');
}
return Math.round(Number(norm));
}
所以我想出了一个识别正确模式的正则表达式: /^\d{1}[.,]\d{1}$/ (注意在括号内的句点之前没有出现斜线!!)
我已将其添加到以下小函数中,我只想将其添加到零或保持变量不变。但由于某种原因,它现在在我添加零的部分崩溃了......
function addZeros(number) {
var s = number;
if (s.match(/^\d{1}[\.,]\d{1}$/)) { //should only get here on "X,X" or "X.X" cases
alert(s); //makes it to here, displays only this alert
s = s.toFixed(2); //wtf is wrong with this?!!
alert(s); //does NOT make it to here.
return s;
}
else {
alert('All good in the hood.');
return s;
}
}