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

C#如何按规则循环分割字符串并将结果存入List集合

字符串按规则分割存入List集合实现方案

直接通过循环替代手动编写的重复分割逻辑,可适配任意长度输入字符串,最终分割结果自动存入List<string>集合,完整可运行代码如下:

using System;
using System.Collections.Generic;

public static class StringSplitter
{
    public static List<string> SplitPipeString(string input, int searchRange = 20, char separator = '|')
    {
        List<string> splitResult = new List<string>();
        if (string.IsNullOrWhiteSpace(input))
        {
            return splitResult;
        }

        string remainingStr = input;
        while (remainingStr.Length > 0)
        {
            // 剩余字符串长度小于查找范围,直接存入最后一段结束循环
            if (remainingStr.Length <= searchRange)
            {
                splitResult.Add(remainingStr);
                break;
            }

            // 取指定长度范围查找最后一个分隔符位置
            string searchArea = remainingStr.Substring(0, searchRange);
            int lastSeparatorIndex = searchArea.LastIndexOf(separator);

            // 查找范围内无分隔符的兼容处理,直接在指定长度位置切分避免死循环
            if (lastSeparatorIndex == -1)
            {
                string segment = remainingStr.Substring(0, searchRange);
                splitResult.Add(segment);
                remainingStr = remainingStr.Substring(searchRange);
                continue;
            }

            // 和示例逻辑一致,切分位置在分隔符后一位
            int cutPosition = lastSeparatorIndex + 1;
            splitResult.Add(remainingStr.Substring(0, cutPosition));
            remainingStr = remainingStr.Substring(cutPosition);
        }

        return splitResult;
    }

    // 测试验证
    public static void Main()
    {
        string testData = "(Test) | (Test) | (Test) | (Test) | (Test) | (Test) | (Test)";
        List<string> result = SplitPipeString(testData);
        foreach (var item in result)
        {
            Console.WriteLine(item);
        }
    }
}

逻辑说明

  • 完全对齐示例中的分割规则:默认取前20个字符范围查找最后一个|,从分隔符后一位完成切分,支持自定义查找长度、分隔符适配其他场景
  • 做了全边界兼容:空输入、剩余字符串长度不足20、查找范围内无分隔符的场景都做了处理,不会抛出异常或出现死循环
  • 用提供的测试数据运行时,集合内存储的元素和给出的控制台输出完全一致:
(Test) | (Test) | 
(Test) | (Test) | 
(Test) | (Test) | 
(Test)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 19:21:30