如何使文本框不区分大小写

时间:2013-10-20 14:32:59

标签: c# foreach case-insensitive

是的,我意识到这有很多东西,但它们对我不起作用。

        if (textBox1 != null)
        {
            string text = textBox1.Text;
            foreach (string s in apple)
            {
                if (s.Contains(text))
                {
                    listBox1.Items.Add(s);
                }
            }
        }

在列表框中,我有:“Bob”和“Joe”。文本框搜索名称,但如果我输入“joe”,则它不会显示joe的名称,但是,如果我输入“Joe”,它会显示名称。

4 个答案:

答案 0 :(得分:3)

尝试ToLower()全部:

if (s.ToLower().Contains(text.ToLower()))

答案 1 :(得分:2)

如果你想要所有字母更低,你可以使用字符串方法ToLower()或如果你想要所有字母上限,你可以使用ToUpper()

例如:

if(txt!=null)
{
    string text=txt.Text.ToLower();
    foreach(string s in apple)
       if(s.ToLOwer().Equals("YourString")
           lst.Items.Add(s);
}

答案 2 :(得分:1)

不幸的是,String.Contains方法没有带有StringComparison参数的重载,以允许不区分大小写的比较。但是,您可以使用String.IndexOf方法。

if (s.IndexOf(text, StringComparison.OrdinalIgnoreCase) >= 0)

答案 3 :(得分:0)

使用String.IndexOf为StringComparison提供重载 -

if(s.IndexOf(text, StringComparison.InvariantCultureIgnoreCase) != -1)
{

}

将此作为扩展方法添加到您认为应该已经存在的项目中

public static class StringExtensions
{
    public static bool Contains(this string value, string valueToCheck, 
                                StringComparison comparisonType)
    {
        return value.IndexOf(valueToCheck, comparisonType) != -1;
    }
}

现在你可以从你的方法中使用它 -

if (s.Contains(text, StringComparison.InvariantCultureIgnoreCase))