我有这样的文字:
const string geometryText = "POINT(-71.064544 42.28787)";
我想将数值作为双数组:
string[] lineStrings = geometryText.Split('(', ')')[1].Split(' ');
double[] lines = Array.ConvertAll(lineStrings, Convert.ToDouble);
这会返回一个数组,但值无效,它返回:
-71064544.0
和4228787.0
我怎样才能让它发挥作用?正则表达式?
答案 0 :(得分:6)
问题可能是句点被解释为千位分隔符而不是小数分隔符。如果要确保句点始终被解释为小数点,而不管机器文化是否使用具有指定区域的double.Parse
:
double[] lines = lineStrings.Select(s => double.Parse(s, CultureInfo.InvariantCulture))
.ToArray();
答案 1 :(得分:3)
在转换为double时使用不变文化,不同的文化将根据文化中某些文化使用的逗号和句点的含义来区分不同的数字。例如,作为一个分组。
double[] lines = Array.ConvertAll(lineStrings, i => Convert.ToDouble(i, CultureInfo.InvariantCulture));
它在这里工作: