You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在字符串集合中筛选包含指定文本的项并添加至ListBox

解决方案:根据输入文本筛选集合中的字符串并添加到ListBox

我懂你的需求啦——你想要根据TextBox里输入的内容,从字符串集合里筛选出包含该输入文本的项,再把它们添加到ListBox中,但之前的代码逻辑不对,所以没实现效果。

问题出在哪?

你之前用的collection.Contains(textBox1.Text)是在检查整个集合里有没有和输入文本完全一样的元素,而不是检查集合里的每个元素是否包含输入文本,而且还没考虑大小写的问题(比如你的示例里"iphone x"和"IPHONE X"应该都要匹配)。

正确的实现方法

这里以C# WinForms为例,给出完整的实现逻辑:

  1. 先清空ListBox(避免重复添加旧内容)
  2. 获取输入文本,先处理空值和首尾空格的情况(提升用户体验)
  3. 遍历集合中的每个字符串,检查该字符串是否包含输入文本(忽略大小写更友好)
  4. 把符合条件的字符串添加到ListBox

代码示例:

// 假设你的字符串集合是这样定义的
var stringCollection = new List<string> { "iphone x sadasd", "IPHONE X s325g", "Another string" };

// 清空ListBox,避免重复展示旧内容
listBox1.Items.Clear();

// 获取输入文本并去除首尾空格
string inputText = textBox1.Text.Trim();

// 如果输入为空,直接返回(也可以选择显示全部内容,看你的需求)
if (string.IsNullOrEmpty(inputText))
{
    return;
}

// 遍历集合,筛选符合条件的字符串
foreach (string item in stringCollection)
{
    // 检查当前字符串是否包含输入文本,忽略大小写
    if (item.IndexOf(inputText, StringComparison.OrdinalIgnoreCase) >= 0)
    {
        listBox1.Items.Add(item);
    }
}

补充说明

  • 如果你更习惯用Contains方法,也可以用它的重载版本来忽略大小写:
    if (item.Contains(inputText, StringComparison.OrdinalIgnoreCase))
    
  • StringComparison.OrdinalIgnoreCase是推荐的忽略大小写方式,比用ToLower()/ToUpper()更高效,也能避免一些文化相关的匹配问题。
  • 如果需要实时筛选(用户输入时就自动更新ListBox),可以把这段代码放到textBox1_TextChanged事件的处理方法里。

内容的提问来源于stack exchange,提问作者bkir knk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:02:57