2017-09-25 153 views
0

我从Web服务获取货币值,我想在数字输入(浮动部分)中显示货币值,并且它是货币符号/名称在简单标签上这是输入的旁边。数据JavaScript将货币分成数字值和货币符号/名称

的例子,我从Web服务中获得:

$ 1.200,05

R $ 1200.05

KR。 1,200.05

37,200.05 KR。

$ 300

500.0€

你可以看到的数据是非常复杂的。

符号/货币名称可以是前或数字值后,它可以具有符号和数量,或者没有空间在所有之间的空间。它也可以有一个货币名称里面,我仍然想保留(像丹麦克朗:KR

小数点符号可以是一个““或” ',它可以跟随任何数量的小数。 同样与千分:它可以是一个“”或“”

我有下面的代码片断得到的数值,但我遇到麻烦货币字符串部分:

if (!isNaN(cost.charAt(0))) { //check whether it starts with number or string, to adjust the regex 
    var regex = /([+-]?[0-9|^.|^,]+)[\.|,]([0-9])/ 
    var result = regex.exec(cost); 
    var floatResult = result? result[1].replace(/[.,]/g, "")+ "." + result[2] : cost.replace(/[^0-9-+]/g, ""); 
    return floatResult; 
} 
else { 
    var regex = /([+-]?[0-9|^.|^,]+)[\.|,]([0-9]+)$/igm 
    var result = regex.exec(cost); 
    var floatResult = result? result[1].replace(/[.,]/g, "")+ "." + result[2] : cost.replace(/[^0-9-+]/g, ""); 
    return floatResult; 
} 

我在我的web应用程序使用jQuery和AngularJS,所以如果在其中一个方法的帮助下有一个更简单的方法,那将是很好的。

回答

0

我不知道如何使用正则表达式来做到这一点,但我可能没有正则表达式做的是:

一)记录第一numeric character

B的指数)记录的索引在最后数字字符

c)从第一个到最后数字字符,转换至一个号码走子的,Number(numerics)(你将不得不删除号码之间用逗号此步骤)

d)如果第一数字字符索引为0,货币符号/名称将在字符串的末尾,最后数字字符

e)之后,否则它会在前面字符串,之前的第一个数字字符。


编辑

您可以简化整个事情,如果你可以肯定,你回来作为响应总是包含的方式隔开值和货币符号一个空间。如果这是真的(就像在你的例子中那样),你可以用string.split(' ')来得到两个字符串的数组,并检查哪一个是数字。