从字符串到布尔值的转换Vb.net

从字符串到布尔值的转换Vb.net,vb.net,logical-operators,boolean-expression,Vb.net,Logical Operators,Boolean Expression,我想用布尔值和二进制逻辑运算符(和/或)计算字符串。 当我写Dim Expression=((True和False)或True)时,“Expression”的值将为True。 但是,当我编写Dim Expression=“((True和False)或True)”并尝试使用convert.ToBoolean()将字符串转换为布尔值,如MsgBox(convert.ToBoolean(Expression))时,我收到一个错误,说明:字符串未被识别为有效的布尔值。。 以前的所有帖子都处理只包含“Tr

我想用布尔值和二进制逻辑运算符(和/或)计算字符串。 当我写
Dim Expression=((True和False)或True)
时,“Expression”的值将为True。 但是,当我编写
Dim Expression=“((True和False)或True)”
并尝试使用convert.ToBoolean()将字符串转换为布尔值,如
MsgBox(convert.ToBoolean(Expression))
时,我收到一个错误,说明:字符串未被识别为有效的布尔值。
以前的所有帖子都处理只包含“True”或“False”的字符串。但我很少看到一篇文章将包含括号和多个运算符的表达式处理为“((真或假)和真)”或更复杂的表达式。convert.ToBoolean函数是否支持这一点?如果支持,为什么会出现此错误?

有一种使用Microsoft脚本控件计算表达式的方法

右键单击项目并选择
Add

在子菜单中,选择
Reference

在出现的窗口中,在左侧单击
COM

向下滚动直到看到MicrosoftScriptControl 1.0,然后双击它

然后单击窗口右下角的
Ok

此函数获取字符串,并使用VBScript计算字符串表达式。你当然可以根据自己的需要调整它

Private Function EvaluateBoolean(formula As String) As Boolean
    Dim sc As New MSScriptControl.ScriptControl
    'SET LANGUAGE TO VBSCRIPT
    sc.Language = "VBSCRIPT"
    'ATTEMPT MATH
    Try
        Return Convert.ToBoolean(sc.Eval(formula))
    Catch ex As Exception
        'SHOW THAT IT WAS INVALID
        MessageBox.Show("Invalid Boolean expression")
    End Try
End Function

您要求它将字符串
“((True和False)或True)
直接转换为布尔值。布尔值只能是
True
False
,与之匹配的字符串只有
“True”
“False”
。它不会像计算一段实际代码那样计算字符串并计算结果,它只是把它当作一个字符串,因为它就是这样。由于它不直接匹配布尔值的字符串版本,因此会出现错误。这里有明确的说明:-“要成功进行转换,value参数必须等于boolean.TrueString(值为True的常量)、boolean.False string(值为False的常量)或null”。如果您阅读了文档,它已经为您解答了问题。那么,有没有办法将这样的字符串转换为布尔值?没有,因为它不是布尔值,实际上是随机字符串。仅仅因为它看起来像一个代码,如果它是代码,那么它的计算结果可能是布尔值,这并不是真正相关的(因为它不是代码,而是字符串)。然而,如果您正在寻找如何将任意字符串解释为代码并执行它,这是一个更广泛的主题。以下内容可能会引起您的兴趣(只需通过谷歌快速搜索,您就可以搜索更多内容):,