Удаление управляющих символов из строки UTF-8
Я нашел этот вопрос, но он также удаляет все допустимые символы utf-8
(возвращает мне пустую строку, в то время как есть допустимые символы utf-8
плюс управляющие символы), Когда я читал о utf-8
, для control characters
не существует определенного диапазона, и каждый набор символов имеет свой собственный control characters
.
Как я могу изменить выше решение только удалить control characters
?
Ответы
Ответ 1
Я думаю, что для вас будет работать следующий код:
public static string RemoveControlCharacters(string inString)
{
if (inString == null) return null;
StringBuilder newString = new StringBuilder();
char ch;
for (int i = 0; i < inString.Length; i++)
{
ch = inString[i];
if (!char.IsControl(ch))
{
newString.Append(ch);
}
}
return newString.ToString();
}
Ответ 2
Вот как я рулон:
Regex.Replace(evilWeirdoText, @"[\u0000-\u001F]", string.Empty)
Это отображает все первые 31 управляющие символы. Следующее значение шестнадцатеричного значения от \u001F - это пространство. Все, что есть перед пространством, - это вся строка и нулевая глупость.
Поверить мне в символы: http://donsnotes.com/tech/charsets/ascii.html
Ответ 3
Если вы планируете использовать строку в качестве строки запроса, вам следует рассмотреть возможность использования Uri.EscapeUriString()
или Uri.EscapeDataString()
перед ее отправкой.
Примечание. Вам все равно может понадобиться вытащить что-нибудь из char.IsControl() первым?