我有一个格式为 2.083.817 的值。当使用jquery脚本CounterUp它给我一个NaN - 可能是因为两个“。”分隔符。
正在转换该值:
var nums = [];
var divisions = $settings.time / $settings.delay;
var num = $this.text();
var isComma = /[0-9]+,[0-9]+/.test(num);
num = num.replace(/,/g, '');
var isInt = /^[0-9]+$/.test(num);
var isFloat = /^[0-9]+\.[0-9]+$/.test(num);
var decimalPlaces = isFloat ? (num.split('.')[1] || []).length : 0;
我不太确定如何让脚本处理两个“。”的值。分隔符。
答案 0 :(得分:1)
解决方案在大部分时间都非常接近,你很难找到它。
for (var i = divisions; i >= 1; i--) {
// Preserve as int if input was int
var newNum = parseInt(num / divisions * i);
// Preserve float if input was float
if (isFloat) {
newNum = parseFloat(num / divisions * i).toFixed(decimalPlaces).replace(".", ",");
}
// Preserve commas if input had commas
if (isComma) {
while (/(\d+)(\d{3})/.test(newNum.toString())) {
newNum = newNum.toString().replace(/(\d+)(\d{3})/, '$1' + '.' + '$2');
}
}
nums.unshift(newNum);
}
我只是将其反转,以便在html中为2,083,817,然后用“。”替换“,”。获得所需的输出。可能不是最完美的解决方案,但它确实有效。
答案 1 :(得分:0)
虽然我认为有一种更简单的方法,但你可以选择
Number("2.083.817".replace(new RegExp("\\.", 'g'), ""))
或一般
Number(number_variable.replace(new RegExp("\\.", 'g'), ""))
如果您要在循环中应用此替换,我建议您先将regex
存储到变量中。像:
regex_replacement = new RegExp("\\.", 'g')
for ....... {
actual_number = Number(number_variable.replace(regex_replacement, ""))
}