Невозможно удалить невидимые символы с помощью Regex - PullRequest
1 голос
/ 04 мая 2011

Я хочу удалить все невидимые символы из строки, сохраняю только пробелы и любые символы от 0x20-0x7F, я использую это: Regex.Replace(QueryString, @"[^\s\x20-\x7F]", ""); Однако это не работает

QueryString имеет символ 0xA0после этого символ все еще существует в QueryString.

Я не уверен, почему это не сработало?

Ответы [ 2 ]

2 голосов
/ 04 мая 2011

0xA0 - это символ неразрывного пробела, и поэтому он соответствует \s.Вместо использования \s разверните его в списке пробельных символов, которые вы хотите включить.

0 голосов
/ 04 мая 2011

Я думаю, вы бы предпочли использовать StringBuilder для обработки таких строк.

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

string result = sb.ToString();
...