2017-09-25 370 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(' ')來得到兩個字符串的數組,並檢查哪一個是數字。