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

如何修改HashSet(Of String)匹配函数实现忽略大小写的最佳匹配

可行,修改方法如下

核心修改点

原代码中HashSet(Of String)默认使用区分大小写的字符串比较规则,只需在创建HashSet时指定不区分大小写的比较器,即可实现忽略大小写的匹配。

修改后的完整代码

Public Shared Function FindBestMatch(ByVal stringToCompare As String, ByVal strs As IEnumerable(Of String)) As String
    ' 使用不区分大小写的比较器创建HashSet
    Dim strCompareHash As New HashSet(Of String)(stringToCompare.Split(Microsoft.VisualBasic.ChrW(32)), StringComparer.OrdinalIgnoreCase)
    Dim maxIntersectCount As Integer = 0
    Dim bestMatch As String = String.Empty
    For Each str As String In strs
        ' 同样为每个待匹配字符串的HashSet指定不区分大小写的比较器
        Dim strHash As New HashSet(Of String)(str.Split(Microsoft.VisualBasic.ChrW(32)), StringComparer.OrdinalIgnoreCase)
        Dim intersectCount As Integer = strCompareHash.Intersect(strHash).Count
        If (intersectCount > maxIntersectCount) Then
            maxIntersectCount = intersectCount
            bestMatch = str
        End If
    Next
    Return bestMatch
End Function

关键说明

  • 使用StringComparer.OrdinalIgnoreCase作为比较器:它基于字符串的Unicode值进行不区分大小写的比较,性能稳定且不受区域文化影响,是大多数场景的首选。如果需要适配特定区域的大小写规则,可以改用StringComparer.CurrentCultureIgnoreCase。
  • 可选优化:如果输入文本存在连续空格,可在Split方法中添加StringSplitOptions.RemoveEmptyEntries参数,过滤分割产生的空字符串,避免无效匹配:
    stringToCompare.Split({Microsoft.VisualBasic.ChrW(32)}, StringSplitOptions.RemoveEmptyEntries)
    

内容的提问来源于stack exchange,提问作者Hugh Self Taught

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:02:01