C#如何拆分带括号嵌套的逗号分隔字符串并按规则展开
C# 嵌套结构逗号分隔字符串拆分方案
实现思路
因为字符串存在括号嵌套结构,括号内部的逗号不属于顶层分隔符,不能直接用String.Split拆分全局逗号,核心逻辑如下:
- 遍历字符串维护括号深度,仅拆分括号深度为0时的逗号,得到所有顶层元素(如
a(x,y,z)、b、c(n,o,p)等) - 逐个处理顶层元素:无括号的元素直接保留;带括号的元素提取前缀和括号内的参数,将每个参数拼接为
前缀(参数)格式 - 合并所有处理后的元素得到最终结果
完整实现代码
using System; using System.Collections.Generic; using System.Text; public static class NestedStringProcessor { public static string Process(string input) { List<string> processedItems = new List<string>(); List<string> topLevelItems = SplitTopLevelComma(input); foreach (string item in topLevelItems) { int leftBracketIndex = item.IndexOf('('); // 无括号的普通项直接保留 if (leftBracketIndex == -1) { processedItems.Add(item.Trim()); continue; } // 提取前缀和参数列表 string prefix = item.Substring(0, leftBracketIndex).Trim(); int rightBracketIndex = item.LastIndexOf(')'); string paramPart = item.Substring(leftBracketIndex + 1, rightBracketIndex - leftBracketIndex - 1).Trim(); string[] parameters = paramPart.Split(',', StringSplitOptions.RemoveEmptyEntries); foreach (string param in parameters) { processedItems.Add($"{prefix}({param.Trim()})"); } } return string.Join(',', processedItems); } // 仅拆分顶层逗号(括号外的逗号) private static List<string> SplitTopLevelComma(string input) { List<string> items = new List<string>(); StringBuilder currentItem = new StringBuilder(); int bracketDepth = 0; foreach (char c in input) { switch (c) { case '(': bracketDepth++; currentItem.Append(c); break; case ')': bracketDepth--; currentItem.Append(c); break; case ',': if (bracketDepth == 0) { items.Add(currentItem.ToString()); currentItem.Clear(); } else { currentItem.Append(c); } break; default: currentItem.Append(c); break; } } if (currentItem.Length > 0) { items.Add(currentItem.ToString()); } return items; } // 测试调用 public static void Main() { string input = "a(x,y,z),b,c(n,o,p),d,e,f(t,w)"; string output = Process(input); Console.WriteLine(output); // 输出:a(x),a(y),a(z),b,c(n),c(o),c(p),d,e,f(t),f(w) } }
适配说明
如果实际输入存在多括号嵌套、括号前后带空格等情况,只需要调整括号深度计数逻辑和空格处理逻辑即可适配。
内容的提问来源于stack exchange,提问作者Niket Shrivastava
相关产品推荐
相关产品推荐

