2

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

我看过很多关于类似问题的帖子,但每个解决方案都没有删除那个特殊字符,或者它正在删除它,还有我需要保留的其他特殊字符。

4

4 回答 4

1

您(未)看到的字符是 U+00AD 软连字符。您可以在正则表达式中使用 引用它\u00ad,例如:

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

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

于 2012-07-16T13:51:14.617 回答
1

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

于 2012-07-16T13:51:31.193 回答
0

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

根据 Unicode 代码点数据库,它的类别是"Cf"(or "Format"),因此可以与 regex 匹配@"\p{Cf}"

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

于 2012-07-16T19:46:11.187 回答
-1

这对我有用:

[\x00-\x1f]|[\x81\x8d\x8d\x8f\x90\x9d\xa0\u2060\uFEFF]
于 2017-03-10T15:31:03.707 回答