我正在尝试使用以下代码从字符串中提取数字:
var mat = Regex.Match(stringValue, @"\d+").Value;
但是当stringValue
包含像“($ 23.01)”这样的小数时,它只提取23而不是23.01。如何获得decimal
值23.01?
答案 0 :(得分:5)
尝试以这种方式解决问题。十进制数具有以下特征:
\d+
)\.?
)\d+
)由于最后两个功能是相关的,我们可以将其放在一个组中并添加?
量词:(\.\d+)?
。
所以现在我们有了整个正则表达式:\d+(\.\d+)?
如果您想匹配.01
之类的十进制数字(前面没有0),您可以使用|
表示“或”并添加另一个案例(\.\d+)
。基本上:(\d+(\.\d+)?)|(\.\d+)
答案 1 :(得分:1)
您是否尝试过this Example:
string inputStr = "($23.01)";
Console.WriteLine(Regex.Match(inputStr, @"\d+.+\d").Value);
否则你可以试试这个LinqSolution:
Console.WriteLine(String.Concat(inputStr.Where(x=> x=='.'||Char.IsDigit(x))));
答案 2 :(得分:-1)
试试这个
var mat = Regex.Split(stringValue,@“[^ 0-9。] +”) .Where(c => c!=“。”&& c.Trim()!=“”);