this の質問が見つかりましたが、有効なutf-8
文字もすべて削除されます(有効なutf-8
文字と制御文字がありますが、空白の文字列が返されます)。 utf-8
について読んだように、control characters
には特定の範囲はなく、各文字セットには独自のcontrol characters
があります。
control characters
のみを削除するように 上記 ソリューションを変更するにはどうすればよいですか?
私は次のコードがあなたのために働くと思います:
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から上の次の16進値は、\ u0020AKAスペースです。スペースの前のすべてはすべて改行であり、意味がありません。
キャラクターについて私を信じるには: http://donsnotes.com/tech/charsets/ascii.html
文字列をクエリ文字列として使用する場合は、送信する前にUri.EscapeUriString()
またはUri.EscapeDataString()
の使用を検討する必要があります。注:最初にchar.IsControl()から何かを引き出す必要があるかもしれませんか?