2012-12-28 145 views
0

我有一個很大的問題,我用這個代碼產生貨幣的數量,正則表達式錯誤

Dim reg = New Regex("\d+") 
Dim str As String = dZ.Rows(y).Item(14).ToString().Replace(",", ""). _ 
           Replace(".00", "").Replace("$", "").Trim 
Dim match = reg.Match(str) 
If match.Success Then 
    str = reg.Replace(str, Decimal.Parse(match.Value).ToString("C")) 
End If 

是它的工作原理,但如果我的量是什麼:

1,900.50 POC 
+0

所以問題是與額外的字符'POC'?除此之外你還期待什麼字符串格式? –

+0

我所要做的就是將所有金額轉換爲貨幣 – kelvzy

回答

1

kelvzy你的解決方案不是很靈活。我會建議我的解決方案:

string cellValue = dZ.Rows[y][14]; 
string cleanedCellValue = Regex.Replace(s, @"\s[^\d.,]+", ""); 
//this will replace everything after the last digit 

string decimalValue = Convert.ToDecimal(cleanedCellValue, CultureInfo.InvariantCulture); 
string str = decimalValue.ToString("C"); 

該解決方案將工作,當每個單元使用逗號作爲千個分隔符,點作爲小數點分隔符和貨幣符號的任何符號。

在其他情況下,請給我更多的例子

+0

這是否會轉換成貨幣? 樣本'POC 19,000.50' – kelvzy

+0

@kelvzy 從第二行刪除\ s。它會工作 'stringcleanCellValue = Regex.Replace(s,@「[^ \ d。,] +」,「」);' –

+0

是的,謝謝我會嘗試它 – kelvzy