如何将带小数分隔符的字符串解析为双c#?

时间:2016-04-06 06:15:49

标签: c# .net parsing

如何从字符串中获取正确的两位数。

string first = "23.3";
string second = "23,3";

现在我使用示例解析器以双格式解析数字:

double number = double.Parse(first);
double another = double.Parse(second);

因此,如果我使用en-US文化并使用小数分隔符'。'然后结果将是number = 23.3another = 233

所以我的问题是可以忽略小数分隔符,何时解析两种情况都返回结果= 23.3。

2 个答案:

答案 0 :(得分:2)

除了用点替换逗号外,还需要提供正确的数字格式:

public double ParseMyString(string myString)
{
    return double.Parse(myString.Replace(',', '.'), 
        new NumberFormatInfo() {NumberDecimalSeparator = "."});
}

在更广泛的范围内替换分隔符的另一个选择是使用:

Thread.CurrentCulture.NumberFormat.NumberDecimalSeparator = ".";

你仍然需要用点替换逗号。

答案 1 :(得分:0)

你可以玩一招:

    private string ReplaceSeparator(string Num)
    {
        return Num.Replace(",", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator).Replace(".", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
    }

    .....

string first = "23.3";
string second = "23,3";

first = ReplaceSeparator(first);
second = ReplaceSeparator(second);

double number = double.Parse(first);
double another = double.Parse(second);