无法使用正则表达式删除不可见字符

本文关键字:字符 删除 正则表达式 | 更新日期: 2023-09-27 17:54:25

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

QueryString有一个字符0xA0,在此之后,该字符仍然存在于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();