我需要帮助在javascript中拆分字符串。
我有一个带货币的字符串。字符串取决于位置。
例如:" 1,99€"或" $ 1,99"
我想拆分字符串并提取"金额"和货币"出来的。
如果失败,我想返回一个空字符串或只是null。
有人知道如何解决这个问题吗?
答案 0 :(得分:1)
如果您希望所有输入都包含分值的小数(即,您的逗号将始终跟随2位数字),您可以使用此:
const amount = money.match(/\d/g).join('') / 100;
const curren = money.match(/[^\d,]/g).join('');
JavaScripts非常讨厌隐式类型强制允许我们将该字符串分子除以数字分母,最后得到一个数字。
要获取货币,我们只需提取所有非数字或逗号字符并加入它们。
如果您不能依赖包含分值的输入(即,您可能会收到一个没有逗号或分数位的全部金额),请尝试:
const amount = money.match(/d/g).join('') / (money.includes(',') ? 100 : 1);
答案 1 :(得分:1)
尝试这种方式从字符串中获取amount
和currency
符号
var price = '1,99€';
//var price = '$1,99';
var amount = Number( price.replace(/[^0-9\.]+/g,""));
var currency = price.match(/[^\d,]/g).join('');
console.log(amount);
console.log(currency);

答案 2 :(得分:0)
我认为最好的方法是使用正则表达式,这里有一个帖子:How to convert a currency string to a double with jQuery or Javascript?可以满足您的需求:
var currency = "GB$13,456.00";
var number = Number(currency.replace(/[^0-9\.]+/g,""));
但是不同的文化以不同的方式写小数点,有些使用逗号,有些使用句号,所以如果你必须处理这些情况,你可能需要调整表达式。
答案 3 :(得分:0)
对于全面的解决方案,我会考虑利用像money.js这样的现有库:
http://openexchangerates.github.io/money.js/
这对于现实世界的产品更合适,但我不确定您是否将此作为学习练习或其他内容。
答案 4 :(得分:0)
您可以尝试使用正则表达式进行匹配和替换
var extractMoney = function(string) {
var amount = string.match(/[0-9]+([,.][0-9]+)?/)
var unit = string.replace(/[0-9]+([,.][0-9]+)?/, "")
if (amount && unit) {
return {
amount: +amount[0].replace(",", "."),
currency: unit
}
}
return null;
}
console.log(extractMoney("1,99€"));
console.log(extractMoney("$1,99"));
console.log(extractMoney("error"));
结果
extractMoney("1,99€"); // => {amount: 1.99, currency: "€"}
extractMoney("$1,99"); // => {amount: 1.99, currency: "$"}
extractMoney("error"); // => null