使用特殊分隔符将字符串转换为双精度

Convert string to double using special separators

我不知道如何执行以下操作:

我想从文件中导入一些数据,包括数值。用户可以自定义分隔符,即char。例如,一个数字可能如下所示:2 524,2。在这里,我们有一个 "thousands" 分隔符 () 和一个 "decimal" 分隔符 (,).

我尝试将这些字符串转换为双精度字符串。

我知道我可能会做这样的事情:

double.Parse(str.Replace(tSep, '[=10=]').Replace(dSep, '.'));

但我正在寻找一种更合适的潜在方法。

提前致谢。

double.Parse(str.Replace(' ', '[=10=]').Replace(',', '.'));

可以,但您还应该将文化设置为 InvariantCulture

double.Parse(str.Replace(' ', '[=11=]').Replace(',', '.',
    Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture));

为了确保您的代码适用于每种用户文化设置

试试这个:

string s = "2 524,2";

CultureInfo ci = new CultureInfo(1);
NumberFormatInfo ni = new NumberFormatInfo();

ni.NumberGroupSeparator = " ";
ni.NumberDecimalSeparator = ",";
ci.NumberFormat = ni;

decimal d = decimal.Parse(s, ci);