正则表达式去除特殊/不可见字符

问题是从域名中删除一些奇怪的字符,但保留特殊的Unicode字符,如重音字母(德语,波兰语丹麦语)例如:radisson-blu.es,你不能看到,但是ss之间有额外的字符。 (尝试复制到记事本,看看它)。

我见过很多关于类似问题的帖子,但是每个解决方案都不会删除该特殊字符,或者将其删除,但也需要保留其他特殊字符。


用空字符串替换正则表达式[^ws.,!@#$%^&*()=+~`-]


你(不)看到的角色是U + 00AD Soft Hyphen。 您可以使用u00ad在正则表达式中引用它,例如:

Regex.Replace(str, @"u00ad", "");

但是对于单字符替换,你也可以使用string.Replace


'xAD'是一个软连字符(代码点的名称是"SOFT HYPHEN" )。

根据Unicode码点数据库,它的类别是"Cf" (或"Format" ),所以它可以与正则表达式@"p{Cf}"匹配。

奇怪的是,Microsoft Visual C#2010 Express表示它不匹配@"p{Cf}" ,而是匹配@"p{Pd}""Dash Punctuation" ),与普通连字符相同。

链接地址: http://www.djcxy.com/p/60831.html

上一篇: Regex to remove special/invisible characters

下一篇: How can I change the color of invisibles in Xcode4?