2012-12-28 144 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