如何在string.join()中指定InvariantCulture?

How to specify InvariantCulture in string.join()?

提问人:skm 提问时间:6/10/2022 更新时间:6/10/2022 访问量:411

问:

我编写了下面的代码,其中我尝试使用方法将类型的数组转换为值。然后,我将字符串值作为属性添加到 XML 元素中。doublestringstring.join()

        XElement element = new("TestNode");
        double[] myDoubleArray = new double[2] { 0.001, 1.0 };
        var stringValue = string.Join(" ", myDoubleArray);
        element.Add(new XAttribute("Values", stringValue));

上述代码的输出为

<TestNode Values="0,001 1" />

可以看出,由于我的系统语言是德语,所以写成了 的值。0.0010,001

问题:如何从双精度类型的数组(以最少的代码行数)创建一个空格分隔的字符串,同时保持?InvariantCulture

C# 字符串 不变区域性

评论


答:

4赞 Heinzi 6/10/2022 #1

不幸的是,没有字符串。采用 CultureInfo 参数的 Join 重载。因此,您必须自己进行转换:

XElement element = new("TestNode");
double[] myDoubleArray = new double[2] { 0.001, 1.0 };

var myDoublesFormatted = myDoubleArray.Select(d => d.ToString(CultureInfo.InvariantCulture));

var stringValue = string.Join(" ", myDoublesFormatted);
element.Add(new XAttribute("Values", stringValue));