Mat*_*ton 4 vb.net string listbox case-insensitive
有一些问题的问题旨在向列表框添加电子邮件别名.我有一个内置的检查,以确保您尝试添加的项目不在列表中,但检查是区分大小写,当我不希望它.我不知道如何让它忽略这个案例......这是我的代码:
Dim ItemToAdd as String = ""
ItemtoAdd = tbxItemtoAdd.Text + "@emaildomain.co.uk"
If Not lbxEmailAliases.Items.Contains(ItemtoAdd) Then
lbxEmailAliases.Items.Add(ItemtoAdd)
End If
Run Code Online (Sandbox Code Playgroud)
目前,如果列表框包含johnsmith24 @ emaildomain.co.uk,并且您尝试添加Johnsmith24(大写J),它将成功添加,但我不希望它这样做.如何让它忽略大小写?
我试图改变lbxEmailAliases.Items.Contains(ItemtoAdd)到lbxEmailAliases.Items.Contains(ItemtoAdd, StringComparison.CurrentCultureIgnoreCase),但它并不满意这点,因为有太多的争论,只会拿一个.
有什么想法吗?
如果这是一个标准的WinForm ListBox控件,那么没有循环遍历所有项目并单独检查每个项目就无法做到这一点.例如:
Dim found As Boolean = False
For Each item As Object In ListBox1.Items
found = item.ToString().Equals(ItemToAdd, StringComparison.CurrentCultureIgnoreCase)
If found Then
Exit For
End If
Next
If found Then
lbxEmailAliases.Items.Add(ItemtoAdd)
End If
Run Code Online (Sandbox Code Playgroud)
但是,如果你对LINQ感到满意,你可以更简洁地这样做:
If ListBox1.Items.OfType(Of String).Any(Function(item) item.Equals(ItemToAdd, StringComparison.CurrentCultureIgnoreCase)) Then
lbxEmailAliases.Items.Add(ItemtoAdd)
End If
Run Code Online (Sandbox Code Playgroud)
或者,正如Andy G指出的那样,LINQ Contains方法更容易,因为它接受了IEqualityComparer一个支持不区分大小写的字符串比较的库存,它由框架提供:
If ListBox1.Items.OfType(Of String).Contains(ItemToAdd, StringComparer.CurrentCultureIgnoreCase) Then
lbxEmailAliases.Items.Add(ItemtoAdd)
End If
Run Code Online (Sandbox Code Playgroud)