我如何使用溢出来解析和删除多个货币符号
How can I use spilt to parse and remove multiple currency signs
我有一个需求,我需要比较两个包含总金额的字段。
其中一个字段表示金额,如 00
(货币符号后跟金额。例如,对于美国 0
,对于英国 €100
)。
我需要解析可以包含来自不同国家/地区的金额的字段。我怎样才能使用 JQuery?
以下是我目前使用的jQuery:
var Amt= parseFloat(total.split('$'));
split 函数可以接受正则表达式。由于 $
符号是一个特殊字符,因此必须使用反斜杠对其进行转义。对于另一个货币符号,我们使用|
符号来表示OR。
split 函数将 return 一个数组,并且由于我们在货币符号上进行拆分,因此该符号将转换为空字符串 ""
。在这种情况下,filter
将只显示具有真值的字符串。
我不确定你在找什么,但我做了一个我认为会有帮助的片段。
var euroTotal = document.getElementById("euro-cost");
var usTotal = document.getElementById("us-cost");
var peruTotal = document.getElementById("peru-cost");
var euroResult = document.getElementById("euro-result");
var usResult = document.getElementById("us-result");
var peruResult = document.getElementById("peru-result");
// Create a regex with currency symbols. Separate symbols with |
var moneyRegex = /[A-Z]{0,2}$|€|¥|₩|£|CHF|¢|฿|L|Q|₭|₮|₨|₱|Kč|Ft|Rp|лв|RM|MT|₦|Gs|zł|lei|S\/\./;
euroResult.innerHTML = `Parsed, ${euroTotal.innerHTML} equals: ` +
parseFloat(euroTotal.innerHTML.split(moneyRegex).filter(Boolean));
usResult.innerHTML = `Parsed, ${usTotal.innerHTML} equals: ` +
parseFloat(usTotal.innerHTML.split(moneyRegex).filter(Boolean));
peruResult.innerHTML = `Parsed, ${peruTotal.innerHTML} equals: ` +
parseFloat(peruTotal.innerHTML.split(moneyRegex).filter(Boolean));
<h3>Item Costs</h3>
<p>This item costs <span id="euro-cost">€400</span></p>
<p>This item costs <span id="us-cost">0</span></p>
<p>This item costs <span id="peru-cost">S/.200</span></p>
<h3>Parsing Currency Values</h3>
<p id="euro-result"></p>
<p id="us-result"></p>
<p id="peru-result"></p>
<p><strong>Feel free to play around with different currencies</strong></p>
您可以尝试使用其他一些货币符号,此函数应删除它们
我认为 split
不是最好的方法。我会使用 match
或 exec
。抄袭和修改 Richard Hamilton 的正则表达式:
var match moneyString.match(/([A-Z]{0,2}$|CHF|[€¥₩£¢฿LQ₭₮₨₱₦]|Kč|Ft|Rp|лв|RM|MT|Gs|zł|lei|S\/\.)(.*)/);
if (! match) {
// handle error
} else {
var currency = match[1];
var amt = parseFloat(match[2]);
}
修改此方法以进行更严格的语法检查,允许在货币符号前使用 -
,限制为小数点后 2 位数字,检查货币符号是否正确,确保匹配整个字符串等
我有一个需求,我需要比较两个包含总金额的字段。
其中一个字段表示金额,如 00
(货币符号后跟金额。例如,对于美国 0
,对于英国 €100
)。
我需要解析可以包含来自不同国家/地区的金额的字段。我怎样才能使用 JQuery?
以下是我目前使用的jQuery:
var Amt= parseFloat(total.split('$'));
split 函数可以接受正则表达式。由于 $
符号是一个特殊字符,因此必须使用反斜杠对其进行转义。对于另一个货币符号,我们使用|
符号来表示OR。
split 函数将 return 一个数组,并且由于我们在货币符号上进行拆分,因此该符号将转换为空字符串 ""
。在这种情况下,filter
将只显示具有真值的字符串。
我不确定你在找什么,但我做了一个我认为会有帮助的片段。
var euroTotal = document.getElementById("euro-cost");
var usTotal = document.getElementById("us-cost");
var peruTotal = document.getElementById("peru-cost");
var euroResult = document.getElementById("euro-result");
var usResult = document.getElementById("us-result");
var peruResult = document.getElementById("peru-result");
// Create a regex with currency symbols. Separate symbols with |
var moneyRegex = /[A-Z]{0,2}$|€|¥|₩|£|CHF|¢|฿|L|Q|₭|₮|₨|₱|Kč|Ft|Rp|лв|RM|MT|₦|Gs|zł|lei|S\/\./;
euroResult.innerHTML = `Parsed, ${euroTotal.innerHTML} equals: ` +
parseFloat(euroTotal.innerHTML.split(moneyRegex).filter(Boolean));
usResult.innerHTML = `Parsed, ${usTotal.innerHTML} equals: ` +
parseFloat(usTotal.innerHTML.split(moneyRegex).filter(Boolean));
peruResult.innerHTML = `Parsed, ${peruTotal.innerHTML} equals: ` +
parseFloat(peruTotal.innerHTML.split(moneyRegex).filter(Boolean));
<h3>Item Costs</h3>
<p>This item costs <span id="euro-cost">€400</span></p>
<p>This item costs <span id="us-cost">0</span></p>
<p>This item costs <span id="peru-cost">S/.200</span></p>
<h3>Parsing Currency Values</h3>
<p id="euro-result"></p>
<p id="us-result"></p>
<p id="peru-result"></p>
<p><strong>Feel free to play around with different currencies</strong></p>
您可以尝试使用其他一些货币符号,此函数应删除它们
我认为 split
不是最好的方法。我会使用 match
或 exec
。抄袭和修改 Richard Hamilton 的正则表达式:
var match moneyString.match(/([A-Z]{0,2}$|CHF|[€¥₩£¢฿LQ₭₮₨₱₦]|Kč|Ft|Rp|лв|RM|MT|Gs|zł|lei|S\/\.)(.*)/);
if (! match) {
// handle error
} else {
var currency = match[1];
var amt = parseFloat(match[2]);
}
修改此方法以进行更严格的语法检查,允许在货币符号前使用 -
,限制为小数点后 2 位数字,检查货币符号是否正确,确保匹配整个字符串等