首页 > 解决方案 > 如何在 Visual Basic 中忽略区分大小写?

问题描述

我下面的代码不起作用:

 For i As Integer = 0 To ListBox1.Items.Count - 1
    If ListBox1.Items(i).ToString = name 
       And ListBox2.Items(i).ToString = founds 
       And ListBox3.Items(i).ToString = foundss Then
             found = (i)
             found1 = found.ToString.Contains(name, StringComparer.OrdinalIgnoreCase) <> 1
    End If
 Next

标签: vb.netcase-insensitive

解决方案


String.ContainsString.IndexOf. Compare返回 a Boolean,而不是 a Integer,并且它不支持不区分大小写。 IndexOf是返回一个Integer并支持不区分大小写的那个。此外,它是StringComparison,不是StringComparer。最后,-1 是表示不匹配的结果:

found1 = found.ToString().IndexOf(name, StringComparer.OrdinalIgnoreCase) <> -1

作为奖励,这里有一个扩展方法,它可以让您调用一个Contains仍然返回 aBoolean但也支持不区分大小写的方法:

Imports System.Runtime.CompilerServices

Public Module StringExtensions

    <Extension>
    Public Function Contains(source As String, value As String, comparisonType As StringComparison) As Boolean
        Return source.IndexOf(value, comparisonType) <> -1
    End Function

End Module

例如

found1 = found.ToString().Contains(name, StringComparer.OrdinalIgnoreCase)

推荐阅读