从UTF-8字符串中删除控制字符

Xaq*_*ron 13 c# string utf-8 control-characters

我发现了这个问题,但它也删除了所有有效utf-8字符(返回一个空字符串,同时有有效utf-8字符和控制字符).正如我所读到的utf-8,没有特定的范围control characters,每个字符集都有自己的特定范围control characters.

如何修改以上解决方案才能删除control characters

Cen*_*tro 19

我认为以下代码适合您:

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();
}
Run Code Online (Sandbox Code Playgroud)

  • @Xaqron:使用`char.IsLetter()`方法. (2认同)

Bri*_*per 19

这是我的风格:

Regex.Replace(evilWeirdoText, @"[\u0000-\u001F]", string.Empty)
Run Code Online (Sandbox Code Playgroud)

这将删除所有前31个控制字符.来自\ u001F的下一个十六进制值是\ u0020这个空间.太空之前的一切都是换行和无效的.

相信我的角色:http://donsnotes.com/tech/charsets/ascii.html