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

C#中按指定元素分割字符串列表的实现问题求助

解决字符串列表按'1'分割为子列表的问题

你的代码出现重复子列表的核心问题是始终复用同一个templist实例。在C#中,List<T>是引用类型,当你调用final.Add(templist)时,添加的是该列表的引用而非副本。后续执行templist.Clear()和添加元素的操作,都会修改这个唯一的实例,最终final中的所有元素都指向同一个列表,导致显示内容完全重复。

另外原代码还有一个小问题:判断条件中使用了单引号'1',但你的元素是字符串类型,C#中应该用双引号"1"进行比较,否则会出现类型不匹配的编译警告。

正确实现代码

// 主列表示例(注意元素都是字符串)
List<string> mainlist = new List<string> { "1", "2", "2", "3", "1", "2", "3", "4", "4", "1", "2", "2" };

List<List<string>> final = new List<List<string>>();
// 主列表始终以"1"开头,先初始化第一个子列表并加入结果集
List<string> templist = new List<string>();
final.Add(templist);

foreach (string log in mainlist)
{
    if (log == "1")
    {
        // 遇到新的"1",创建新的子列表实例并加入结果集
        templist = new List<string>();
        final.Add(templist);
    }
    // 将当前元素添加到当前子列表中
    templist.Add(log);
}

逻辑说明

  1. 由于主列表以"1"开头,先初始化第一个子列表并加入final,确保第一个元素能被正确捕获
  2. 遍历每个元素时,若遇到"1",立即创建新的List<string>实例,替换当前templist并加入结果集
  3. 无论当前元素是否为"1",都将其添加到当前的templist中
  4. 每个子列表都是独立的实例,互相之间不会产生干扰

运行上述代码后,final的结果将完全符合预期:

  • ["1","2","2","3"]
  • ["1","2","3","4","4"]
  • ["1","2","2"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:40:33