15

この質問を見つけましたが、すべての有効な文字も削除されます(有効な文字と制御文字utf-8があるのに、空白の文字列が返されます)。utf-8について読んだようにutf-8、の特定の範囲はなく、control characters各文字セットには独自のがありcontrol charactersます。

上記のソリューションを変更して削除のみにするにはどうすればよいcontrol charactersですか?

4

3 に答える 3

23

This is how I roll:

Regex.Replace(evilWeirdoText, @"[\u0000-\u001F]", string.Empty)

This strips out all the first 31 control characters. The next hex value up from \u001F is \u0020 AKA the space. Everything before space is all the line feed and null nonsense.

To believe me on the characters: http://donsnotes.com/tech/charsets/ascii.html

于 2014-04-02T07:12:40.043 に答える
22

私は次のコードがあなたのために働くと思います:

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();
}
于 2011-07-23T10:03:12.850 に答える
0

If you plan to use the string as a query string, you should consider using the Uri.EscapeUriString() or Uri.EscapeDataString() before sending it out. Note: You might still need to pull out anything from char.IsControl() first?

于 2013-01-04T22:17:06.363 に答える