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

C# 基于[,]分隔符拆分字符串并提取分组内容的实现问题咨询

C# 字符串分组提取与格式校验实现

核心思路

优先用固定分隔符拆分+格式规则校验的方案,逻辑清晰性能高,不需要复杂的字符串操作:

  1. 按统一分隔符[,]对输入字符串做拆分
  2. 先通过拆分后的数组长度做第一层合法性校验
  3. 对偶数位的索引项做规则匹配,确认是否符合三类合法索引格式(纯数字、纯字母、字母+右括号)
  4. 校验通过后直接提取奇数位的内容作为分组结果

可直接复用的代码实现

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

public static class GroupExtractor
{
    // 固定分隔符
    private static readonly string[] _separator = new[] { "[,]" };
    // 合法索引规则:纯数字/纯英文字母/英文字母+右括号,不区分大小写
    private static readonly Regex _validIndexRegex = new Regex(@"^(?:\d+|[a-zA-Z]|[a-zA-Z]\))$", RegexOptions.Compiled);

    /// <summary>
    /// 尝试从输入字符串提取分组内容
    /// </summary>
    /// <param name="input">输入字符串</param>
    /// <param name="groups">输出的分组列表,合法格式下为4个分组</param>
    /// <returns>输入是否符合标准分隔模式</returns>
    public static bool TryExtract(string input, out List<string> groups)
    {
        groups = new List<string>();
        if (string.IsNullOrWhiteSpace(input))
            return false;

        var splitItems = input.Split(_separator, StringSplitOptions.None);
        // 4个分组的合法字符串拆分后长度固定为8(4组*2元素/组:索引+分组名)
        if (splitItems.Length != 8)
            return false;

        for (int i = 0; i < splitItems.Length; i += 2)
        {
            // 校验索引项是否合法
            if (!_validIndexRegex.IsMatch(splitItems[i].Trim()))
                return false;
            // 收集分组内容
            groups.Add(splitItems[i + 1].Trim());
        }

        return true;
    }
}

使用示例

// 测试合法输入
string validInput = "1[,]Group A[,]2[,]Group B[,]3[,]Group C[,]4[,]Group D";
if (GroupExtractor.TryExtract(validInput, out var groups))
{
    // 这里groups的内容就是 ["Group A", "Group B", "Group C", "Group D"]
    foreach (var group in groups)
    {
        Console.WriteLine(group);
    }
}

// 测试非法输入
string invalidInput = "1 Group A[,]2 Group B[,]3 Group C[,]4 Group D";
if (!GroupExtractor.TryExtract(invalidInput, out _))
{
    Console.WriteLine("输入不符合标准分隔模式");
}

补充说明

  • 如果需要适配更多数量的分组,只需要把代码里的长度校验splitItems.Length != 8改成splitItems.Length % 2 != 0即可
  • 索引规则如果有调整,直接修改_validIndexRegex的正则规则即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 05:54:02