2

我正在为学校做一个 ITP 项目。在这个项目中,我这样做是为了当我将一个单词添加到列表框中时,有一个过滤器可以在列表框中搜索该单词,如果匹配为假,则将该单词添加到列表中。但是这个过滤器不区分大小写,这意味着即使有奥迪它也会添加单词 audi,但是因为第一个字母是大写的,所以过滤器不会检测到这一点。这个位的代码是

private void btnAddWord_Click(object sender, EventArgs e)
    {
        if (this.lbxUnsortedList.Items.Contains(this.tbxAddWord.Text) == false)
        {
            //if the textbox is empty
            if (tbxAddWord.Text == "")
            {
                MessageBox.Show("You have entered no value in the textbox.");
                tbxAddWord.Focus();
            }
            //if the number of items in the listbox is greater than 29
            if (lbxUnsortedList.Items.Count > 29)
            {
                MessageBox.Show("You have exceeded the maximum number of values in the list.");
                tbxAddWord.Text = "";
            }

            //if the number of items in the listbox is less than 29
            else
            {

                //add word to the listbox
                this.lbxUnsortedList.Items.Add(this.tbxAddWord.Text);
                //update tbxListBoxCount
                tbxListboxCount.Text = lbxUnsortedList.Items.Count.ToString();
                //onclick, conduct the bubble sort
                bool swapped;
                string temp;
                do
                {
                    swapped = false;
                    for (int i = 0; i < lbxUnsortedList.Items.Count - 1; i++)
                    {
                        int result = lbxUnsortedList.Items[i].ToString().CompareTo(lbxUnsortedList.Items[i + 1]);
                        if (result > 0)
                        {
                            temp = lbxUnsortedList.Items[i].ToString();
                            lbxUnsortedList.Items[i] = lbxUnsortedList.Items[i + 1];
                            lbxUnsortedList.Items[i + 1] = temp;
                            swapped = true;
                        }
                    }
                } while (swapped == true);
                tbxAddWord.Text = "";
            }
        }
        if (this.lbxUnsortedList.Items.Contains(this.tbxAddWord.Text) == true)
        {
            MessageBox.Show("The word that you have added is already on the list");
            tbxAddWord.Text = "";
            tbxAddWord.Focus();
        }

    }

我想知道如何使这个大小写不敏感,这样即使第一个字母是大写,过滤器也会拾取奥迪。

4

5 回答 5

0

尝试这个

  public bool checkItemExist(string itemToCheck)
    {
         return lbxUnsortedList.Items.Cast<string>.Where(a=>a.ToLower().Equals(tbxAddWord.Text.ToLower()).Count > 0;
    }
于 2013-10-16T06:31:27.530 回答
0

我只是建议你这个条件,它不是最佳的,但它可以按照你想要的方式工作:

        bool contains = false;

        for (int i = 0; i < lbxUnsortedList.Items.Count; i++)
        {
            if (lbxUnsortedList.Items[i].ToString().ToLower() == this.tbxAddWord.Text.ToString().ToLower())
            {
                contains = true;
            }

        }

        if (!contains)
        {
            //your code
        }
        else
        {
            MessageBox.Show("The word that you have added is already on the list");
            tbxAddWord.Text = "";
            tbxAddWord.Focus();

        }
于 2013-10-16T06:31:32.663 回答
0

这个链接应该给你你正在寻找的东西。帖子的某些部分说

culture.CompareInfo.IndexOf(paragraph, word, CompareOptions.IgnoreCase)

作为替代方案,您可以尝试以小写形式存储单词

this.lbxUnsortedList.Items.Add(this.tbxAddWord.Text.ToLower());

然后以同样的方式搜索字符串

this.lbxUnsortedList.Items.Contains(this.tbxAddWord.Text.ToLower()) == true

但是,如果您使用 'lbxUnsortedList' 进行显示,那么使用带有键的字典作为普通单词和小写的值也可能会有所帮助。

另外,如果您允许我扔其他东西,请使用string.IsNullOrEmpty(tbxAddWord.Text)而不是tbxAddWord.Text == "". 您也可能想使用tbxAddWord.Text = string.Empty;.

于 2013-10-16T06:31:50.037 回答
0

在比较两个字符串值之前,您必须将字符串转换为大写或小写。

循环遍历列表框,lbxUnsortedList从列表中获取项目。并将每个字符串与来自 TextBox 的输入字符串进行比较,tbxAddWord.

for (int i = 0; i < lbxUnsortedList.Items.Count; i++)
{
    if (lbxUnsortedList.Items[i].ToString().ToLower() == this.tbxAddWord.Text.ToString().ToLower())
    {
         //Your Code
    }
}
于 2013-10-16T06:44:12.073 回答
0

对我来说是这样的

var query = _repository.Get(e => e.IsDeleteUser != true, null, "Role");

        if (!string.IsNullOrEmpty(filter.UserName))
        {
            query = query.Where(e => e.UserName.**ToLower()**.Contains(filter.UserName**.ToLower()**)).ToList();
        }
于 2021-03-18T05:42:13.030 回答