无法使用Regex删除不可见的字符

时间:2011-05-03 22:50:21

标签: c# regex chars

我想从字符串中删除任何不可见的字符,只保留空格&来自0x20-0x7F的任何字符, 我用这个:Regex.Replace(QueryString, @"[^\s\x20-\x7F]", ""); 但它不起作用

QueryString有一个字符0xA0,之后,字符仍然存在于QueryString中。

我不确定为什么这不起作用?

2 个答案:

答案 0 :(得分:2)

0xA0是不间断的空格字符 - 因此它与\s匹配。而不是使用\s,将其展开到您想要包含的空白字符列表中。

答案 1 :(得分:0)

我认为你宁愿使用StringBuilder来处理这些字符串。

StringBuilder sb = new StringBuilder(str.Length);
foreach(char ch in str)
{
    if (0x20 <= ch && ch <= 0x7F)
    {
        sb.Append(ch)
    }
}

string result = sb.ToString();