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

发布于 2024-11-04 13:32:15 字数 231 浏览 0 评论 0原文

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

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

我不知道为什么这不起作用?

I want to remove any invisible chars from a string, only keep spaces & any chars from 0x20-0x7F,
I use this: Regex.Replace(QueryString, @"[^\s\x20-\x7F]", "");
However it does not work

QueryString has a char 0xA0, after that, the char still exists in QueryString.

I am not sure why this failed to work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

裂开嘴轻声笑有多痛 2024-11-11 13:32:15

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

0xA0 is the non-breaking space character - and as such it's matched with \s. Rather than using \s, expand this out into the list of whitespace characters you want to include.

皓月长歌 2024-11-11 13:32:15

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

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

string result = sb.ToString();

I think you would rather use StringBuilder to process such strings.

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

string result = sb.ToString();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文