使用Regex.Replace()进行字符串的替换

本文介绍如何使用正则表达式的Replace方法进行字符串替换,包括基本替换、格式化替换及条件替换等高级用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//将正则表达式匹配的不同部分,用同一字符串替换,并返回替换后的结果
public static string Replace(string input, string pattern, string replacement);
//将正则表达式匹配的不同部分,用<span style="font-family: Arial, Helvetica, sans-serif;">MatchEvaluator委托返回值依次替换</span><span style="font-family: Arial, Helvetica, sans-serif;">,并返回替换后的结果</span>
public static string Replace(string input, string pattern, MatchEvaluator evaluator);
//<span style="font-family: Arial, Helvetica, sans-serif;">MatchEvaluator委托</span>
public delegate string MatchEvaluator(Match match);


实例:

string input = "1a2b3";
string pattern = "([0-9]+)";
//将input中的数字全部替换为@
string val1 = Regex.Replace(input, pattern, "@");
Console.WriteLine(val1);
//将input中的数字全部填充为2位
string val2 = Regex.Replace(input, pattern, m => Convert.ToInt32(m.Groups[1].Value).ToString("00"));
Console.WriteLine(val2);
//将input中的数字替换为指定的值
string val3 = Regex.Replace(input, pattern, m =>
{
    switch (m.Groups[1].Value)
    {
	case "1":
	    return "A";
	case "2":
	    return "B";
	case "3":
	    return "C";
	default:
	    return "D";
    }
});
Console.WriteLine(val3);
输出结果:



### C# 中 Regex.Replace 方法详解 #### 方法签名 `Regex.Replace` 是 .NET Framework 提供的一个静态方法,用于执行正则表达式匹配并替换指定模式的内容。该方法有多个重载版本,其中一种常见的形式为: ```csharp public static string Replace( string input, string pattern, string replacement, RegexOptions options); ``` 此函数接收四个参数: - `input`: 被处理的目标字符串。 - `pattern`: 正则表达式模式,用来描述要查找的子串特征[^1]。 - `replacement`: 替代模板字符串,在每次找到匹配项时都会被插入到原位置上;可以包含 `$n` 或 `${name}` 形式的占位符引用捕获组的结果。 - `options`: 可选枚举值组合,控制解析行为(大小写敏感度、多行模式等),默认情况下不传递任何标志。 #### 实际应用例子 下面给出几个具体的实例来展示如何运用这个强大的功能实现不同的需求: ##### 基础替换操作 假设有一个简单的 HTML 片段想要移除所有的标签只保留纯文本部分,则可以通过如下方式完成: ```csharp string htmlText = "<p>Hello world!</p>"; string cleanText = System.Text.RegularExpressions.Regex.Replace(htmlText, @"<[^>]+>", "", System.Text.RegularExpressions.RegexOptions.None); Console.WriteLine(cleanText); // 输出:"Hello world!" ``` 这里使用的正则表达式 `<[^>]+>` 将会匹配任意一对尖括号内的内容,并将其替换成空字符串[]^1]。 ##### 复杂场景下的高级用法 当涉及到更复杂的转换逻辑时,比如日期格式化,我们可以利用命名捕获和条件语句来进行更加灵活的操作: ```csharp // 输入样例:2023-07-28T14:39:56Z string dateTimeString = "2023-07-28T14:39:56Z"; string formattedDate = System.Text.RegularExpressions.Regex.Replace(dateTimeString, @"(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)(?:\.(\d+))?([zZ]|[\+\-]\d\d:\d\d)", "$1年$2月$3日 $4:$5:$6", System.Text.RegularExpressions.RegexOptions.None); Console.WriteLine(formattedDate); // 输出:"2023年07月28日 14:39:56" ``` 在这个例子中,不仅实现了基本的时间戳到中文风格时间表示法之间的转变,还巧妙地忽略了可能存在的毫秒数以及时区偏移量[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值