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
相关产品推荐
相关产品推荐

