You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.Net中Like运算符不符合预期问题及匹配需求咨询

VB.Net中Like运算符的匹配问题

测试案例

以下是VB.Net中的测试结果:

  • 测试1:
    ? "0.326X0.450" Like "*#X#*#X#*#X#*"
    
    返回 False,符合预期(字符串仅含1个X)
  • 测试2:
    ? "0.326X0.450" Like "*#X#*"
    
    返回 True,符合预期(匹配包含单个X的结构)
  • 测试3:
    ? "0.326X0.450" Like "*#X#*#X#*"
    
    返回 True,不符合预期(原以为该模式需要匹配两个X,但*可匹配空内容,导致单个X的字符串也能匹配)

需求说明

需要区分两种字符串格式:

  • 格式A:[正值]X[正值](例如2.000X2.000,仅含1个X)
  • 格式B:[正值]X[正值]X[正值](例如2.000X2.000X2.000,含2个X)

解决方案

用Like运算符实现区分

Like的*通配符可匹配任意长度(包括0)的字符,因此需要通过组合条件限制匹配范围:

  1. 匹配仅含1个X的格式A:
    ' 确保字符串包含且仅包含一个X,同时X前后为数字相关内容
    ? "2.000X2.000" Like "*[0-9.]X[0-9.]*" And Not "2.000X2.000" Like "*X*X*"
    
    更严谨的写法(避免匹配X2.000或2.000X这类不完整格式):
    ? "2.000X2.000" Like "#*[0-9]X#*[0-9]" And Not "2.000X2.000" Like "*X*X*"
    
  2. 匹配含2个X的格式B:
    ' 确保字符串包含且仅包含两个X
    ? "2.000X2.000X2.000" Like "*X*X*" And Not "2.000X2.000X2.000" Like "*X*X*X*"
    

用正则表达式实现精确匹配

如果需要严格校验正值的合法性(比如避免多个小数点、非数字字符等),Like的能力有限,推荐使用正则表达式:

Imports System.Text.RegularExpressions

' 匹配格式A(仅1个X,前后为合法正值)
Regex.IsMatch("2.000X2.000", "^[0-9]+(\.[0-9]+)?X[0-9]+(\.[0-9]+)?$")

' 匹配格式B(仅2个X,前后为合法正值)
Regex.IsMatch("2.000X2.000X2.000", "^[0-9]+(\.[0-9]+)?X[0-9]+(\.[0-9]+)?X[0-9]+(\.[0-9]+)?$")

内容的提问来源于stack exchange,提问作者PKanold

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 03:43:17