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

C# 使用特殊分隔符将字符串转换为双精度,c#,double,C#,Double,我不知道如何执行以下操作: 我想从文件中导入一些数据,包括数值。用户可以个性化分隔符,它们是char。例如,一个数字可能是这样的:2524,2。这里有一个“千”分隔符()和一个“十进制”分隔符(,) 我尝试将这些字符串转换为double 我知道我可能会这样做: double.Parse(str.Replace(tSep, '\0').Replace(dSep, '.')); 但我正在寻找一种更合适的方法 先谢谢你 double.Parse(str.Replace(' ', '\0').Repl

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

我想从文件中导入一些数据,包括数值。用户可以个性化分隔符,它们是
char
。例如,一个数字可能是这样的:
2524,2
。这里有一个“千”分隔符(
)和一个“十进制”分隔符(

我尝试将这些字符串转换为double

我知道我可能会这样做:

double.Parse(str.Replace(tSep, '\0').Replace(dSep, '.'));
但我正在寻找一种更合适的方法

先谢谢你

double.Parse(str.Replace(' ', '\0').Replace(',', '.'));
可以,但是您还应该将区域性设置为
InvariantCulture

double.Parse(str.Replace(' ', '\0').Replace(',', '.',
    Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture));
为了确保您的代码在每个用户区域性设置上都有效

可以,但是您还应该将区域性设置为
InvariantCulture

double.Parse(str.Replace(' ', '\0').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);
试试这个:

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

使用
double.Parse()
您可以创建一个特殊的
CutureInfo
并在那里设置分隔符。我可能会重复我对其他方法的偏好,即使这给出了相同的结果,但感谢您的回答。我对其他方法的偏好,即使这给出了相同的结果,谢谢你的回答,这正是我想要的。谢谢。这正是我要找的东西。非常感谢。