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

如何在C#中按字符拆分DataTable列并处理分隔符前后空格?

问题:拆分DataTable的Message列为PRNumber和Message列

需求:将DataTable的Message列按分隔符(:或-,前后可能存在空格)拆分为PRNumber和Message两列,输入输出示例如下:

输入DataTable

Message
--------
PR-111: test message
PR-112 - test message new
PR-113 : test message new2

期望输出DataTable

PRNumber    Message
------  -----------
PR-111  test message
PR-112  test message new
PR-113  test message new2

我尝试了以下代码但未得到正确结果:

var r = dt1.AsEnumerable().Select(g => new {
           
            PRNumber = g["Message"].ToString().Contains(":") == true ? g["Message"].ToString().Split(':')[0] : g["Message"].ToString().Split('-')[0],
            Message = g["Message"].ToString().Contains(":") == true ? g["Message"].ToString().Split(':')[0] : g["Message"].ToString().Split('-')[1]
        }).ToList();

问题分析

你的代码存在几个关键问题:

  1. 拆分逻辑错误:只通过是否包含:来选择拆分符,但PR编号本身就带有-(比如PR-111),用-拆分时会把PR单独切出来,导致PRNumber取值错误。
  2. Message列取值错误:当内容含:时,你错误取了Split(':')[0](这是PRNumber的内容),应该取拆分后的第二部分。
  3. 未处理空格:分隔符前后的空格没有被去除,会导致提取的内容带多余空格。

解决方案:使用正则表达式精准匹配

推荐用正则表达式处理这种多分隔符+空格的场景,能精准提取PR编号和消息内容。

代码示例

using System.Text.RegularExpressions;

// 预编译正则表达式,提升重复匹配性能
var prRegex = new Regex(@"^(PR-\d+)\s*[:-]\s*(.*)$", RegexOptions.Compiled);

var result = dt1.AsEnumerable()
    .Select(row => {
        var msgContent = row["Message"].ToString();
        var matchResult = prRegex.Match(msgContent);
        
        if (matchResult.Success)
        {
            return new {
                PRNumber = matchResult.Groups[1].Value.Trim(),
                Message = matchResult.Groups[2].Value.Trim()
            };
        }
        
        // 处理格式不符合的行,可根据需求调整默认值
        return new {
            PRNumber = string.Empty,
            Message = msgContent
        };
    })
    .ToList();

正则表达式说明

^(PR-\d+)\s*[:-]\s*(.*)$

  • ^:匹配字符串开头
  • (PR-\d+):捕获PR编号(比如PR-111),作为PRNumber
  • \s*[:-]\s*:匹配分隔符(:或-),同时忽略分隔符前后的任意空格
  • (.*)$:捕获分隔符后的所有内容,作为Message

这样处理后,不管分隔符是:还是-,前后有没有空格,都能准确拆分出需要的两列。

内容的提问来源于stack exchange,提问作者sandeep.mishra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:32:32