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

C#如何根据子串从字符串数组中移除对应完整元素?

解决C#字符串数组移除包含指定子串元素的问题

我来帮你理清问题所在,然后给出正确的实现方案:

你之前的两次尝试都没成功,核心原因是对Contains方法的作用理解有误:

  • 第一次用my_array.Contains(user_input):这个方法是检查数组中是否存在和输入字符串完全相等的元素,而不是判断元素里是否包含输入作为子串。你的数组元素都是带前缀的长字符串,自然匹配不到。
  • 第二次加%:C#的字符串匹配不支持这种SQL风格的通配符,%在这里只是普通字符,所以还是没法匹配到包含子串的元素。

正确的实现方式

你需要逐个检查数组中的每个元素,判断它是否包含目标子串,然后保留那些不包含该子串的元素。用LINQ的Where方法可以很简洁地实现这个需求,完整代码如下:

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        string[] my_array = { "XY:1234567;ZW:124", "XY:124252" };
        string user_input = "1234567";
        
        // 过滤掉包含目标子串的元素,得到处理后的数组
        string[] filteredArray = my_array.Where(item => !item.Contains(user_input)).ToArray();
        
        // 验证结果
        foreach (string item in filteredArray)
        {
            Console.WriteLine(item); // 输出:XY:124252
        }
    }
}

代码细节解释

  • item.Contains(user_input):这才是判断单个字符串是否包含指定子串的正确方法,和数组的Contains不是一回事。
  • Where(item => !item.Contains(user_input)):遍历数组的每个元素,只保留那些不包含目标子串的元素。
  • ToArray():把LINQ查询的结果转换回字符串数组,得到最终需要的结果。

如果只是想先判断数组中是否存在包含该子串的元素(而不是直接过滤),可以用Any方法:

bool hasMatchingItem = my_array.Any(item => item.Contains(user_input));
if (hasMatchingItem)
{
    Console.WriteLine("Inside");
}
else
{
    Console.WriteLine("Not Inside");
}

这样就能正确检测到数组里是否有包含目标子串的元素了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:57:32