我想从字符串中删除任何不可见的字符,只保留 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();