2013-10-04 32 views
1

我需要幫助來處理以下情況: 我有一些值需要在頁面中求和,但這些值的字段是動態創建的(所以這些領域)。如何在javascript中獲取字符串的貨幣

這些值可以以不同的格式顯示(取決於貨幣或小數位),即:R $ 20.000,2(小數點後1位)或US $ 20.000,18(2位小數位)或€20,000.180(3位小數位和帝國制度)。

我做了什麼至今:

由於字段是動態創建的,我添加了一個CSS類的,表格中的風格(他們是通過生成的每個循環),然後我用我創建了一個javascript原型類,用於將字符串轉換爲浮點型(如果我通過R $ 20.000,02或R $ 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)刪除貨幣,但我不知道如何存儲它,以便我可以連接它在和結束

更新:

通過以下保羅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爲null,但我印在執行val = re.exec(m);之前,它會打印一個像這樣的號碼R $ 91,67,但他們I收到TypeError:val爲null。

你能看到有什麼問題嗎?

+0

你有不同的貨幣符號硬編碼或只有R $? –

+0

假設我正確地理解了你,你可以將貨幣存儲在一個var中,並將其附加到結果或結果的開頭,以便var + sum或sum + var – Speedy

+0

我沒有硬編碼符號,@ kasperTaeymans(它們是所有根據用戶區域生成...我硬編碼它在我的JavaScript函數進行測試,如果它會工作(它做!:))。但是我試圖找到一種方法來通過javascript來存儲這個信息,我也試圖直接從用戶對象中發送它,但它不容易找到它。 – periback2

回答

1

什麼有關的regexp看起來像這樣

var re = /^([a-z]+)([^\d])([\d.,]+)$/i, 
    m; 
m = re.exec('US$20.000,18'); // ["US$20.000,18", "US", "$", "20.000,18"] 
m = re.exec('R$20,000.02'); // [ "R$20,000.02", "R", "$", "20,000.02"] 

然後m[3]是數值,並且這可以使用更多的邏輯,例如被轉換成數如果它的形式是x,xxx.xx

var int = +m[3].replace(/,/g, ''); // 20000.02 
+0

它會工作€,因爲它不會有$符號? – periback2

+0

're.exec('歐元€1.50'); // [「歐元€1.50」,「歐盟」,「€」,「1.50」],它只是匹配一個非數字。 –

+0

歐元符號前沒有歐盟..:/(我也不能使用這個可執行函數...我的意思是..我會更新這個問題,這樣你就可以看到我現在正在做什麼(按照你的方法),但它不起作用 – periback2

相關問題