我需要帮助来处理以下情况:我有一些值需要在页面中求和,但这些值的字段是动态创建的(这些字段的 id 也是如此)。
这些值可以以不同的格式显示(取决于货币或小数位),即:20.000,2 雷亚尔(1 个小数位)或 20.000,18 美元(2 个小数位)或 20,000.180 欧元(3 个小数位和英制) .
到目前为止我做了什么:
由于字段是动态创建的,我在该字段的样式中添加了一个 css 类(它们是通过 for each 循环生成的),然后我使用我创建的一个 javascript 原型类将字符串转换为浮点数(如果我通过 R 20.000,02 美元或 20,000.02 雷亚尔,它返回 20000.02)。以下代码在我需要求和的页面中生成的所有字段中进行迭代。
<script>
var sum = 0;
jQuery(".countTotalEffectiveMonth").each(function(){
sum += localeUtils.s2f(jQuery(this).text().replace("R$",""));
jQuery("#ScenarioCurrentYearSavings").text(sum);
})
alert(sum);
</script>
问题:
1:我对货币 ("R$","") 进行了硬编码(将其从字符串中删除并进行计算)。关于我该怎么做的任何想法?我尝试使用正则表达式,但失败了:(。我只能使用此正则表达式 (/[^0-9-]/g) 删除货币,但我不知道如何存储它以便连接它在总和的最后。
更新:
按照 Paul S. 的方法,我这样做了:
var val;
var re = /^([a-z]+)([^\d])([\d.,]+)$/i;
var m;
jQuery(".countTotalEffectiveMonth").each(function(){
m = jQuery(this).text();
val = re.exec(m);
val += val[3].replace(/,/g, '');
alert(val[1]+val[3]);
jQuery("#ScenarioCurrentYearSavings").text(val[1]+val[3]);
});
它说 val 为空,但我在执行之前打印了 mval = re.exec(m);
并打印了一个类似R$91,67的数字,但我收到 TypeError: val is null。
你能看出有什么问题吗?