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

如何在C#中拆分字符串并忽略括号内空格(支持嵌套)

实现带嵌套括号的表达式拆分(C#)

当然可以实现,string.Split(' ')无法满足需求是因为它无法识别括号的嵌套层级,只能做简单的空格分割。我们可以通过手动遍历字符串、跟踪括号深度的方式来实现正确拆分。

实现思路

  • 遍历输入字符串的每个字符,维护一个括号深度计数器:遇到(时计数器+1,遇到)时计数器-1
  • 当括号深度为0且遇到空格时,将当前累积的子串作为一个拆分元素,重置累积器
  • 遍历结束后,将最后一段累积的子串加入结果集合
  • 先对输入字符串做Trim()处理,避免首尾空格导致的空元素

代码示例

using System.Collections.Generic;
using System.Text;

public static class ExpressionSplitter
{
    public static string[] SplitNestedExpression(string input)
    {
        if (string.IsNullOrWhiteSpace(input))
            return new string[0];
        
        input = input.Trim();
        List<string> result = new List<string>();
        StringBuilder currentSegment = new StringBuilder();
        int bracketDepth = 0;

        foreach (char c in input)
        {
            if (c == '(')
            {
                bracketDepth++;
                currentSegment.Append(c);
            }
            else if (c == ')')
            {
                bracketDepth--;
                currentSegment.Append(c);
            }
            else if (c == ' ' && bracketDepth == 0)
            {
                // 仅括号深度为0时的空格才作为分隔符
                if (currentSegment.Length > 0)
                {
                    result.Add(currentSegment.ToString());
                    currentSegment.Clear();
                }
            }
            else
            {
                currentSegment.Append(c);
            }
        }

        // 添加遍历结束后剩余的最后一段内容
        if (currentSegment.Length > 0)
        {
            result.Add(currentSegment.ToString());
        }

        return result.ToArray();
    }
}

测试验证

调用上述方法测试目标场景:

// 测试基础场景
string input1 = "multiply (add 5 5) 5";
string[] output1 = ExpressionSplitter.SplitNestedExpression(input1);
// 输出结果:["multiply", "(add 5 5)", "5"]

// 测试嵌套括号场景
string input2 = "multiply (add (add 2 5) 5) 5";
string[] output2 = ExpressionSplitter.SplitNestedExpression(input2);
// 输出结果:["multiply", "(add (add 2 5) 5)", "5"]

这段代码可以正确处理任意层级的嵌套括号,仅在括号外部的空格处拆分字符串,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:10:44