我想从字符串中删除任何不可见的字符,只保留 0x20-0x7F 中的空格和任何字符,我使用这个:Regex.Replace(QueryString, @"[^\s\x20-\x7F]", "");
但是它不起作用
QueryString有一个 char 0xA0,之后,该 char 仍然存在于QueryString.
我不确定为什么这不起作用?
0xA0是不间断的空格字符 - 因此它与\s. 与其使用 ,不如将\s其展开到您想要包含的空白字符列表中。
我认为您宁愿使用 StringBuilder 来处理此类字符串。
StringBuilder sb = new StringBuilder(str.Length);
foreach(char ch in str)
{
    if (0x20 <= ch && ch <= 0x7F)
    {
        sb.Append(ch)
    }
}
string result = sb.ToString();