Удаление управляющих символов из строки UTF-8
Я нашел этот вопрос, но он удаляет все действительные utf-8
символы также (возвращает мне пустую строку, в то время как есть действительные utf-8
символы плюс управляющие символы). Как я читаю о utf-8
нет определенного диапазона для control characters
и каждый набор символов имеет свой control characters
,
Как я могу изменить вышеуказанное решение, чтобы удалить только control characters
?
3 ответа
Я думаю, что следующий код будет работать для вас:
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();
}
Вот как я катаюсь:
Regex.Replace(evilWeirdoText, @"[\u0000-\u001F]", string.Empty)
Это удаляет все первые 31 управляющих символов. Следующее шестнадцатеричное значение от \u001F равно АКА пробелу. Все, что находится перед пробелом, это все перевод строки и ноль ерунды.
Поверить мне на персонажей: http://donsnotes.com/tech/charsets/ascii.html
Если вы планируете использовать строку в качестве строки запроса, вам следует рассмотреть возможность использования Uri.EscapeUriString()
или же Uri.EscapeDataString()
перед отправкой. Примечание: вам все еще может понадобиться сначала извлечь что-нибудь из char.IsControl()?