我有一行代码用于字符串格式化,如下所示 -
double dVal = Convert.ToDouble(args[0],
System.Globalization.CultureInfo.InvariantCulture);
string result = string.Format("{0}", dVal);
现在在其他语言环境(如德语和法语)中,result
字符串包含“,”而不是“。”这是预期的行为。
有什么我可以添加的东西,我将用它来保持我的双倍价值。“并且不包含“,”?
答案 0 :(得分:1)
您可以修改当前的NumberFormatInfo对象,明确地将十进制分隔符设置为您需要的分隔符。
这样的事情可以解决问题:
double dVal = Convert.ToDouble(args[0],
System.Globalization.CultureInfo.InvariantCulture);
var nfi = NumberFormatInfo.CurrentInfo.Clone() as NumberFormatInfo;
nfi.NumberDecimalSeparator = ".";
string result = string.Format(nfi, "{0}", dVal);
请注意,您必须克隆NumberFormatInfo
,因为属性是只读的。
答案 1 :(得分:1)
格式化字符串时显式使用英语文化。如果你需要它与其他解析字符串的应用程序进行往返,那么就像使用解析一样使用Invariant文化。
答案 2 :(得分:0)
您可以使用String.Replace
因为它不关心它是否包含','
double dVal = Convert.ToDouble(args[0], System.Globalization.CultureInfo.InvariantCulture);
string result = dVal.ToString().Replace(',','.');
不是最好的解决方案,但又快捷方便:)