我需要一个函数来解析用户输入的数字,以加倍.我无法做任何客户端或改变输入的方式.
Input | Desired Output "9" | 9 "9 3/4" | 9.75 " 9 1/ 2 " | 9.5 "9 .25" | 9.25 "9,000 1/3" | 9000.33 "1/4" | .25
我看到这个post,但它使用Python,我只是想知道是否有人知道任何花哨的C#的方式来处理这个,我花时间写我自己的.
解决方法
我会用这个正则表达式:
Regex re = new Regex(@"^\s*(\d+)(\s*\.(\d*)|\s+(\d+)\s*/\s*(\d+))?\s*$"); string str = " 9 1/ 2 "; Match m = re.Match(str); double val = m.Groups[1].Success ? double.Parse(m.Groups[1].Value) : 0.0; if(m.Groups[3].Success) { val += double.Parse("0." + m.Groups[3].Value); } else { val += double.Parse(m.Groups[4].Value) / double.Parse(m.Groups[5].Value); }
未经测试,至今,但我认为它应该工作.