我需要一个函数来将用户输入的数字解析为 double 。我无法做任何客户端操作或更改输入方式。

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);
}

到目前为止,未经测试,但我认为它应该可以工作。

Here's a demohere's another demo

关于c# - 字符串分数加倍,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8761531/

10-13 08:17