我有以下要求:
我有一个包含控制字符的字符串 str...我想用特定的值替换这些控制字符。因此,我使用以下正则表达式:
str = Regex.Replace(str, @"\p{C}+","\r\n");
上述代码将所有控制字符替换为\r\n。
然而,我想做与上面相同的事情,但是排除以下控制字符:
SPACE , `\u000D`, `\u000A`
我该如何修改上面的正则表达式来实现这个目标?有什么想法吗?谢谢!
str = Regex.Replace(str, @"[\p{C}-[ \u000D\u000A]]+","\r\n");
^^^^^^^^^^^^^^^^^^^^^^^
[\p{C}-[ \u000D\u000A]]+
模式匹配来自\p{C}
Unicode类别的一个或多个字符,除了空格、\u000D
和\u000A
。
这是代码:[^\P{C}\r\n]+
负类别 [^
负属性 \P{C}
(负类别 + 负属性 = \p{C}
)
回车符 \r
换行符 \n
结果:除了 CRLF 之外的所有控制码。
(顺便说一句:空格不匹配 \p{C}
)