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

如何在C#中筛选出包含字符数组所有字符的字符串列表?

问题分析与解决

你的代码存在几个关键问题,导致无法正确筛选:

  • 语法错误:内层foreach循环的括号写错了,charsArray}应该改成charsArray)
  • 逻辑错误:只要字符数组里有一个字符被单词包含,就立刻把单词加入Final,这会导致不符合要求的单词(比如只包含部分字符)被错误添加,同时符合要求的单词会被重复添加多次(每匹配一个字符就加一次)
  • 判断逻辑颠倒:应该检查单词是否缺少字符数组中的任意一个字符,一旦发现缺少就标记为不符合,只有当所有字符都被包含时才加入结果列表

修正后的基础循环写法

foreach (string word in List)
{
    bool containsAll = true;
    foreach (char letter in charsArray)
    {
        // 只要有一个字符不在单词里,就标记为不符合,直接跳出内层循环
        if (!word.Contains(letter))
        {
            containsAll = false;
            break;
        }
    }
    // 所有字符都检查通过后,再添加到结果列表
    if (containsAll)
    {
        Final.Add(word);
    }
}

foreach (string word in Final)
{
    Console.WriteLine(word);
}

更简洁的LINQ写法

如果用C#的LINQ可以一行完成筛选,代码更简洁易读:

Final = List.Where(word => charsArray.All(letter => word.Contains(letter))).ToList();

foreach (string word in Final)
{
    Console.WriteLine(word);
}

测试你给出的示例:

  • charsArray为{'a','e','i','z'}
  • List为{"abcde","iertaz","aio","zzeml","amoioze"}
    运行后会正确输出iertaz和amoioze

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:24:26