【问题标题】:String.Split Method not working as intendedString.Split 方法未按预期工作
【发布时间】:2014-11-03 21:40:20
【问题描述】:

我正在尝试在每个运算符之间拆分此方程式,但 String.Split 方法输出错误的数字

代码:

string tmpEquation = "200.2−-23.5";
double[] Numbers;
Numbers = tmpEquation.Split(new char[] { '+', '−', '*', '/' })
          .Select(s => Double.Parse(s))
          .ToArray()
;

输出:

Number[0] = 2002.0
Number[1] = -235.0

应该是:

Number[0] = 200.2
Number[1] = -23.5

我做错了什么?

【问题讨论】:

  • @HuorSwords 不要这样做。解决语言环境问题的糟糕方法。
  • 我不认为你会得到第二个数字 -235,因为你正在分裂 - 它会删除减号。
  • @Selman22 这是两个不同的字符,用于区分负数和运算符。
  • @L.B 同意。我退休了! :)
  • 是的,你是对的。我还没有意识到

标签: c# split


【解决方案1】:

解析是文化敏感的。可能您的文化使用与dot (.) 不同的小数分隔符。可以使用InvariantCulture进行解析:

Numbers = tmpEquation.Split(new char[] { '+', '−', '*', '/' })
      .Select(s => Double.Parse(s, CultureInfo.InvariantCulture))
      .ToArray()

【讨论】:

  • 谢谢!我总是对它是“,”还是“。”感到困惑,因为我们在德国使用“,”作为小数点。
  • @Encore 作为旁白,您可以使用以下方法获取文化的小数点分隔符:CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator
猜你喜欢
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多