使用特殊分隔符将字符串转换为双精度
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);
我不知道如何执行以下操作:
我想从文件中导入一些数据,包括数值。用户可以自定义分隔符,即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);