C# 要删除特殊/不可见字符的正则表达式
问题是从域名中删除一些奇怪的字符,但保留特殊的unicode字符,如重音字母(德语、丹麦语或波兰语) 例如:radis-son-blu.es,你看不见,但是ss之间有额外的字符。(尝试复制到记事本以查看它) 我看到过很多关于类似问题的帖子,但是每个解决方案都没有删除那个特殊字符,或者正在删除它,还有其他我需要保留的特殊字符。你(没有)看到的字符是U+00AD软连字符。您可以使用C# 要删除特殊/不可见字符的正则表达式,c#,regex,character-encoding,special-characters,C#,Regex,Character Encoding,Special Characters,问题是从域名中删除一些奇怪的字符,但保留特殊的unicode字符,如重音字母(德语、丹麦语或波兰语) 例如:radis-son-blu.es,你看不见,但是ss之间有额外的字符。(尝试复制到记事本以查看它) 我看到过很多关于类似问题的帖子,但是每个解决方案都没有删除那个特殊字符,或者正在删除它,还有其他我需要保留的特殊字符。你(没有)看到的字符是U+00AD软连字符。您可以使用\u00ad在正则表达式中引用它,例如: Regex.Replace(str, @"\u00ad", ""); 但是对
\u00ad
在正则表达式中引用它,例如:
Regex.Replace(str, @"\u00ad", "");
但是对于单字符替换,您也可以使用
string.Replace
。替换regex[^\w\s,!@$%^&*()=+~`-]
和空字符串'\xAD'
是一个软连字符(代码点的名称是“软连字符”
)
根据Unicode代码点数据库,其类别是“Cf”
(或“Format”
),因此可以与regex@“\p{Cf}”
匹配
奇怪的是,Microsoft Visual C#2010 Express说它不匹配@“\p{Cf}”
,而是匹配@“\p{Pd}”
(“破折号标点符号”
),与普通连字符的类别相同。这对我来说很有用:
[\x00-\x1f]|[\x81\x8d\x8d\x8f\x90\x9d\xa0\u2060\uFEFF]
你在我的评论之后编辑了它;我一开始并没有错。我检查了修改后的版本,它似乎按照我想要的方式工作。非常感谢。我知道,但重点不是只处理这一个角色,而是处理整个角色。