【问题标题】:C# how to detect operators in string to calculate? [duplicate]C#如何检测字符串中的运算符进行计算? [复制]
【发布时间】:2013-09-13 22:32:38
【问题描述】:

假设程序接收到输入字符串"8*10+6/2",在这种情况下应该输出83。如何处理运营商?

我可以将字符串切割成单独的字符串,然后检测它是数字还是运算符。如果是运算符,我可以将其转换为int。但我不知道如何处理运算符以便计算工作。

【问题讨论】:

  • 你有没有尝试过?
  • 正则表达式和字符串拆分是你的朋友 :)
  • 听起来很适合parser
  • @JhonAlx:正则表达式和字符串拆分绝对不是你的朋友。编写(或搜索)解析器将是一种更简单的处理方式。
  • @JeroenVannevel 我之所以这么说是因为我在 TopCoder 中进行过 this 培训。由于问题陈述,我的解决方案没有运算符优先级分析,但通过一些工作它会起作用:)

标签: c# operator-keyword


【解决方案1】:

你可以使用DataTable.Compute-"trick":

double result = (double)new DataTable().Compute("8*10+6/2", null);

表达式中支持以下算术运算符:

+ (addition)
- (subtraction)
* (multiplication)
/ (division)
% (modulus)

更多信息在:DataColumn.Expression@表达式语法

【讨论】:

  • John Ryann,@Tim Schmelter 的答案是你会在现实生活中使用的,但对于学校来说,他们可能希望你对 if (string.equals("/")){use division...} else if (str.equals("*")... 做一些诡计。这取决于这是从编程入门课程还是 C# 语言课程的练习。您也可以尝试使用 char 比较和 switch 语句。确切的实施在您的能力范围内。祝你好运! :)
  • 这个答案保存了问题。 +1
猜你喜欢
  • 1970-01-01
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
相关资源
最近更新 更多