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

如何提取字符串中多次出现的括号内子串(非正则实现)

提取字符串中括号内的子串(无正则方案)

给定字符串数组:

public string[] test = {"(as) (bd) (ct)", "(sdf) te"};

需求是提取所有()之间的子串并存入数组,且不能使用正则表达式。之前使用Split('(', ')')的方式会把括号外的内容(比如示例中的"te")也包含进来,以下是可行的解决方案:

实现代码

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

class Program
{
    public static List<string> ExtractBracketContent(string[] inputArray)
    {
        List<string> result = new List<string>();
        bool insideBracket = false;
        StringBuilder currentContent = new StringBuilder();

        foreach (string str in inputArray)
        {
            foreach (char c in str)
            {
                if (c == '(')
                {
                    insideBracket = true;
                    currentContent.Clear();
                }
                else if (c == ')')
                {
                    if (insideBracket)
                    {
                        result.Add(currentContent.ToString());
                        insideBracket = false;
                        currentContent.Clear();
                    }
                }
                else if (insideBracket)
                {
                    currentContent.Append(c);
                }
            }
        }

        return result;
    }

    public static void Main()
    {
        string[] test = {"(as) (bd) (ct)", "(sdf) te"};
        var bracketContents = ExtractBracketContent(test);
        
        foreach (var content in bracketContents)
        {
            Console.WriteLine(content);
        }
        // 输出:
        // as
        // bd
        // ct
        // sdf
    }
}

思路说明

  • 用布尔变量insideBracket跟踪当前是否处于括号内部
  • 用StringBuilder动态收集括号内的字符,避免频繁字符串拼接带来的性能损耗
  • 逐个遍历每个字符串的字符:
    • 遇到左括号(时,标记进入括号状态,清空当前收集的内容
    • 遇到右括号)时,若此前处于括号内,则将收集的内容加入结果列表,同时退出括号状态
    • 仅当处于括号内部时,才收集当前字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:18:29