加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

string – 检查列表框忽略大小写中的项目

发布时间:2020-12-17 07:25:35 所属栏目:百科 来源:网络整理
导读:有一些问题的问题旨在向列表框添加电子邮件别名.我有一个内置的检查,以确保您尝试添加的项目不在列表中,但检查是区分大小写,当我不希望它.我不知道如何让它忽略这个案例……这是我的代码: Dim ItemToAdd as String = ""ItemtoAdd = tbxItemtoAdd.Text + "@e
有一些问题的问题旨在向列表框添加电子邮件别名.我有一个内置的检查,以确保您尝试添加的项目不在列表中,但检查是区分大小写,当我不希望它.我不知道如何让它忽略这个案例……这是我的代码:

Dim ItemToAdd as String = ""

ItemtoAdd = tbxItemtoAdd.Text + "@emaildomain.co.uk"

If Not lbxEmailAliases.Items.Contains(ItemtoAdd) Then
    lbxEmailAliases.Items.Add(ItemtoAdd)
End If

目前,如果列表框包含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

但是,如果你对LINQ感到满意,你可以更简洁地这样做:

If ListBox1.Items.OfType(Of String).Any(Function(item) item.Equals(ItemToAdd,StringComparison.CurrentCultureIgnoreCase)) Then
    lbxEmailAliases.Items.Add(ItemtoAdd)
End If

或者,正如Andy G指出的那样,LINQ Contains方法更容易,因为它接受IEqualityComparer,并且框架提供了支持不区分大小写的字符串比较的库存:

If ListBox1.Items.OfType(Of String).Contains(ItemToAdd,StringComparer.CurrentCultureIgnoreCase) Then
    lbxEmailAliases.Items.Add(ItemtoAdd)
End If

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读