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

VB.NET中String数组Contains方法匹配异常问题咨询

VB.NET数组Contains匹配"ctr"失败的原因

问题代码

Dim currentRow As String() = {
                "Search term",
                "Clicks",
                "Impressions",
                "CTR (%)",
                "Avg. CPC",
                "Cost",
                "All conv. rate",
                "Cost / all conv.",
                "All conv."
        }

Dim strComp As StringComparer = StringComparer.CurrentCultureIgnoreCase

Debug.WriteLine(currentRow.Contains("search term", strComp))  'True
Debug.WriteLine(currentRow.Contains("clicks", strComp))       'True
Debug.WriteLine(currentRow.Contains("impressions", strComp))  'True 
Debug.WriteLine(currentRow.Contains("CTR (%)", strComp))      'True 
Debug.WriteLine(currentRow.Contains("ctr (%)", strComp))      'True
Debug.WriteLine(currentRow.Contains("ctr", strComp))          'False  

核心原因

Array.Contains方法执行的是全字符串精确匹配,而非子串匹配:它会遍历数组中的每个元素,检查元素是否和目标字符串在指定比较器规则下完全相等,不会判断元素是否包含目标作为子串。

具体到这段代码:

  • 查找"ctr (%)"时,数组中的"CTR (%)"忽略大小写后和目标字符串完全一致,因此匹配成功返回True。
  • 查找"ctr"时,数组中没有任何元素忽略大小写后等于"ctr"——唯一相关的元素"CTR (%)"比目标多了" (%)"后缀,不满足全匹配的要求,因此返回False。

实现子串匹配的方法

如果需要判断数组中是否存在包含目标子串的元素,需要手动遍历数组,使用String.Contains(支持指定比较器)来检查每个元素:

Dim hasCtr = currentRow.Any(Function(s) s.Contains("ctr", strComp))
Debug.WriteLine(hasCtr) ' 输出True

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:06:33