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

如何用单次Regex.Replace完成特定字符串的多规则格式转换?

单次Regex.Replace实现字符串格式转换

问题背景

原始字符串:

string str = "= Fields!Change_Date.Value & Fields!Change_User.Value";

期望输出:

Change_Date && Change_User

目前已通过三次Regex.Replace调用完成转换,想确认是否可以只用单次调用实现需求。现有代码如下:

string str = "= Fields!Change_Date.Value & Fields!Change_User.Value";        
string x = Regex.Replace(str, @"=? Fields!", " ");            
string y = Regex.Replace(x, @".Value", "");
string z = Regex.Replace(y, @"&", "&&");

可行方案

完全可以通过单次Regex.Replace实现,分两种场景处理:

场景1:固定两个字段的情况

直接用捕获组匹配字段名,同时替换&符号:

string str = "= Fields!Change_Date.Value & Fields!Change_User.Value";
string result = Regex.Replace(str, @"=? Fields!(\w+)\.Value\s*&\s*Fields!(\w+)\.Value", "$1 && $2");

正则拆解

  • =? Fields!:匹配开头可选的=和固定的 Fields!前缀
  • (\w+):捕获字段名(如Change_Date),替换时用$1、$2引用捕获内容
  • \.Value:精准匹配字段后的.Value后缀
  • \s*&\s*:匹配&以及前后可能的空白字符,替换为&&

场景2:字段数量不固定(支持多个&连接)

如果后续可能出现多个字段用&连接的情况,可结合MatchEvaluator做动态替换:

string str = "= Fields!Change_Date.Value & Fields!Change_User.Value & Fields!Change_Type.Value";
string result = Regex.Replace(str, @"=? Fields!(\w+)\.Value|\s*&\s*", match => 
    match.Groups[1].Success ? match.Groups[1].Value : " && ");

逻辑说明

  • 正则会匹配两种内容:要么是完整的字段表达式(= Fields!XXX.Value或 Fields!XXX.Value),要么是&及前后空白
  • 匹配到字段时,返回捕获的字段名;匹配到&时,返回&&

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:15:34