为建立中文知识库加块砖 ——中科大胡不归
问题描述
如何快速匹配和替换包含字母、数字、常见符号的混合字串?
案例一
实现将
Foreground="#8FFF"、Foreground="White"全替换为Foreground="{DynamicResource ForegroundBrush}"
1. 确定对象:
Foreground="#8FFF"
Foreground="White"
2. 找出固定部分:
Foreground=""
3. 描述变化部分
变化部分 #8FFF 和 White为#开头的字母数字或纯字母。
- 引号内包含任意大小写的字符和数字用:\w,相当于 [A-Za-z0-9_] :
Foreground="\w+"
- 用 ? 处理符号 # 存在或不存在:
Foreground="#?\w+"
结束。
在IDE上的匹配效果:
案例二
实现将
Console.WriteLine($"Voice name: '{voiceInfo.Name}'");全替换为$"Voice name: '{voiceInfo.Name}'".PrintGreen();
1. 确定对象:
Console.WriteLine($"Voice name: '{voiceInfo.Name}'");
2. 找出固定部分:
Console.WriteLine();
3. 描述变化部分
表示 $"Voice name: '{voiceInfo.Name}'" :
$"Voice name: '{voiceInfo.Name}'"是包含字符数字常见字符的字串,超过 \w+ 的表示范围,所有用 .+ :
Console.WriteLine(.+);
- 因为需要替换操作,需要加 () 框住引用的部分:
Console.WriteLine((.+));
- () 是正则的转义字符,所以加 \ ,以避免多取前后一对括号:
Console.WriteLine\((.+)\);
- 替换操作:
$1.PrintGreen();
结束。
在IDE上的匹配效果: