【问题标题】:How to convert a string with digits and operators to a number?如何将带有数字和运算符的字符串转换为数字?
【发布时间】:2014-10-21 12:38:20
【问题描述】:

我在将TextBox.Text 转换为Integer 时遇到问题。

文本仅包含以下格式的数字: 例如:1 + 3 * 6 - (2 - 1)

如何将此文本框(或字符串)转换为 Integer 以取回计算值?

我在网上找到的没有任何帮助。

【问题讨论】:

标签: vb.net string type-conversion


【解决方案1】:

您可以使用DataTable 作为计算器:

Dim calc As New DataTable()
Dim result = CType(calc.Compute("1 + 3 * 6 - (2 - 1)", Nothing), Double) ' 18.0

看看DataColumn.Expression的评论,看看支持什么。

【讨论】:

  • 我试过你的代码 Tim。我将 textbox1.text 插入到名为 value 的字符串中。使用您的代码:Dim result = CType(calc.Compute(value, Nothing), Double) 并得到错误:从类型“DBNull”到类型“Double”的转换无效。
  • @DaliborBoldis:Tim 的代码有效——我刚刚尝试过。 +1
  • @Tim Schmelter:Dim value as string = "" ::: value = textbox1.text ::: Dim result = CType(calc.Compute(value, Nothing), Double) 和错误。我需要一种将 1 + 3 * 6 等字符串转换为整数并实时计算的方法。
  • 对不起,它有效。我只是忘了添加 label3.text = result.to 字符串。 +1 队友 :) 非常感谢!
【解决方案2】:

这是使用NCalc(一个开源库)的答案:

Dim e As New NCalc.Expression("1 + 3 * 6 - (2 - 1)")
Console.WriteLine(e.Evaluate) 'prints 18  

获取NCalc using NuGet:

Install-Package ncalc

NCalc 是 .NET 中的数学表达式求值器。 NCalc 可以解析任何表达式并计算结果,包括静态或动态参数和自定义函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多