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

如何在C#中从含多个匹配分隔符的字符串提取字符串数组?

在C#中提取字符串中的占位符

要从目标字符串里提取{}包裹的占位符名称,用正则表达式做模式匹配是最直接高效的方案。

基础实现代码

using System;
using System.Text.RegularExpressions;

class PlaceholderExtractor
{
    static void Main()
    {
        string input = "hi how are you? {Id} any string {Name} can come here {Test}";
        // 匹配{和}之间的非空内容,捕获中间的占位符名称
        MatchCollection matches = Regex.Matches(input, @"\{([^}]+)\}");

        string[] placeholders = new string[matches.Count];
        for (int i = 0; i < matches.Count; i++)
        {
            // 提取分组1的内容(即{}中间的部分)
            placeholders[i] = matches[i].Groups[1].Value;
        }

        // 验证结果
        foreach (var placeholder in placeholders)
        {
            Console.WriteLine(placeholder);
        }
    }
}

用LINQ简化代码

如果习惯使用LINQ,可以把代码简化成更紧凑的形式:

using System;
using System.Linq;
using System.Text.RegularExpressions;

class PlaceholderExtractor
{
    static void Main()
    {
        string input = "hi how are you? {Id} any string {Name} can come here {Test}";
        string[] placeholders = Regex.Matches(input, @"\{([^}]+)\}")
                                   .Cast<Match>()
                                   .Select(match => match.Groups[1].Value)
                                   .ToArray();

        foreach (var placeholder in placeholders)
        {
            Console.WriteLine(placeholder);
        }
    }
}

正则表达式说明

\{([^}]+)\} 的含义:

  • \{:转义匹配左大括号(因为{在正则中属于特殊字符)
  • ([^}]+):定义捕获分组,匹配任意非右大括号的字符,且至少出现一次,保证占位符名称非空
  • \}:转义匹配右大括号

这个方案适用于无嵌套大括号的场景,完全匹配你的需求,运行后会得到包含Id、Name、Test的字符串数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:15:27