vb.net - 如何在 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
解决方案
你String.Contains
对String.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)
推荐阅读
- r - 如何确定变量连续减少的第一行?
- go - bazel go_embed_data“无法嵌入”
- python - InvalidArgumentError: In[0] mismatch In[1] shape: 1 vs. 3: [22500,1] [3,1] 0 0 [Op:MatMul]
- javascript - Firestore collection.set 方法不起作用
- python - 使用 np 数组中的元组作为颜色时,cv2.rectangle 不起作用
- c++ - 我们能以某种方式使用 array[i] 而不是 *(array+i) 吗?
- r - dplyr:如何在创建新协变量的同时使用多个列进行 pivot_wider?
- angular - Ionic 5 和 Angular 12:canActivate 保护修改浏览器历史记录,即使从保护返回 false
- spring-boot - Asyn retry Junit默认没有运行3次
- python - RuntimeError: Timeout context manager 应该在任务内部使用,在异步函数之外发送 discord.py 消息