VB.NET与运算符混淆,模式小于签名

Dav*_*ten 5 vb.net sql-like

Dim rc As Boolean = "2" Like "*?<*?"
Run Code Online (Sandbox Code Playgroud)

我不明白为什么rc等于True,肯定2不一样*?<*?.

上面的模式需要一个字符串

  • 至少三个字符(两个?和一个<)
  • 其中,<符号是某处内部.

据我所知,<不是一个特殊的角色,这意味着除了<Like运算符之外的其他东西.

使用Visual Studio 2010.

PGa*_*her 1

虽然我无法直接解释为什么2会这样"*?<*?"

您的查询如下:

  • *- 匹配0个或多个字符
  • ?- 后面跟着一个字符
  • <- 跟随<角色
  • *- 后跟 0 个或多个字符
  • ?- 由一个字符终止

对于你想要的逻辑;

匹配之前至少三个字符,其中“<”出现在字符串内部的某个位置

这会导致查询;

Dim rc As Boolean = "2" Like "???*<*"
Run Code Online (Sandbox Code Playgroud)

内容如下:

  • ???- 至少匹配3个字符
  • * - 后跟任意数量的其他字符
  • < - 跟随<角色
  • * - 后跟任意数量的其他字符

我知道这不是一个直接的答案,但我希望它仍然有帮助......

编辑:

在下面回答您的评论。

你想要...吗;

找到一个字符串,其中某处有一个“<”,且两侧至少有一个字符

这会导致查询;

Dim rc As Boolean = "2" Like "*?<?*"
Run Code Online (Sandbox Code Playgroud)

这将返回 False 作为结果;

Dim rc As Boolean = "<" Like "*?<?*"
Run Code Online (Sandbox Code Playgroud)

然而;

Dim rc As Boolean = "2<2" Like "*?<?*"
Run Code Online (Sandbox Code Playgroud)

会返回true。

我希望这有帮助(更多!)