【发布时间】:2018-02-27 10:02:17
【问题描述】:
我想用布尔值和二元逻辑运算符(和/或)评估字符串。
当我写Dim Expression = ((True And False) Or True) 时,“表达式”的值将是真实的。
但是,当我写 Dim Expression = "((True And False) Or True)" 并尝试使用 Convert.ToBoolean() 像 MsgBox(Convert.ToBoolean(Expression)) 一样将字符串转换为布尔值时,我收到一条错误消息:字符串未被识别为有效的布尔值。 em> 如picture。
以前的所有帖子都处理仅包含“True”或“False”的字符串。但我很少发现一篇文章处理包含括号和多个运算符的表达式,如“((真或假)和真)”或更复杂的表达式。 convert.ToBoolean 函数是否支持此功能,如果支持,为什么会出现此错误?
【问题讨论】:
-
您要求它将 字符串
"((True And False) Or True)"直接转换为布尔值。布尔值只能是True或False,与它们匹配的唯一字符串是"True"和"False"。它不会像实际的一段代码一样评估您的字符串并计算结果,它只是将其视为字符串,因为它就是这样。而且由于它不直接匹配布尔值的字符串版本,因此您会收到错误。 -
这里清楚地记录了:msdn.microsoft.com/en-us/library/86hw82a3(v=vs.110).aspx - “为了成功转换,值参数必须等于 Boolean.TrueString,一个值为 True 的常量,Boolean.FalseString,一个值为为 False,否则必须为空”。如果您阅读文档,它已经为您解答了您的问题。
-
那么没有办法将这样的字符串转换为布尔值吗?
-
不,因为它不是布尔值,它实际上是一个随机字符串。仅仅因为它看起来像代码,如果它是代码则可能评估为布尔值并不真正相关(因为它不是代码,它是一个字符串)。
-
但是,如果您正在寻找如何将任意字符串解释为代码并执行它,这是一个更广泛的主题。您可能会感兴趣以下内容(只需通过 google 快速搜索,您可以搜索更多内容):nullskull.com/articles/20030908.asp、stackoverflow.com/questions/1511376/…、stackoverflow.com/questions/4629/…
标签: vb.net logical-operators boolean-expression