有一个代码:
class Program
{
static void Main(string[] args)
{
string text = "My name is Adam";
text = Regex.Replace(text, @"[^\s]", "x");
Console.WriteLine(text);
Console.ReadKey();
}
}
其中所有字符都替换为x一个小字符,除了所有空白和非空白字符,包括换行符(\s)。
结果:"xx xxxx xx xxxx"
我尝试了各种选择,现在我无法保留角色的大小写,即 把小写字母改成小写字母,把大写字母改成x大写X字母。例如:
使这个:"My name is Adam"成为这个:"Xx xxxx xx Xxxx"
您可以(应该!)使用Unicode 类别。
Ll- 表示任何字母的小写字母。Lu- 任何字母的大写字母。如果您不仅需要替换字母,而且通常需要用 替换除空格和大写字母之外的所有字符,
x那么Unicode大写字母可以用 找到
\p{Lu},所有其他需要替换的字符可以用\S(任何非空白字符)捕获。一次性替换所有字符的解决方案:
在线查看演示:
该模式
(\p{Lu})|\S找到并在组#1 中放入一个 Unicode 大写字母,如果它是除空白字符之外的另一个字符,则将其放入匹配缓冲区中。用, 如果组 #1 有效(非空)或,m.Groups[1].Success ? "X" : "x"替换匹配项。Xx\S如果速度对您很重要,那么我建议您尝试这个选项,它应该比正则表达式更快:
那些。我们通过这条线,只需将小写字母替换为
'x',将大写字母替换为'X',没什么复杂的。