Removing control characters from a UTF-8 string

后端 未结 3 1809
忘了有多久
忘了有多久 2021-01-11 10:03

I found this question but it removes all valid utf-8 characters also (returns me a blank string, while there are valid utf-8 characters plus contro

相关标签:
3条回答
  • 2021-01-11 10:40

    I think the following code will work for you:

    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();
    }
    
    0 讨论(0)
  • 2021-01-11 10:44

    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?

    0 讨论(0)
  • 2021-01-11 10:52

    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

    0 讨论(0)
提交回复
热议问题