繁体   English   中英

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

[英]Removing control characters from a UTF-8 string

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

如何修改上述解决方案以仅删除control characters

这是我的风格:

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

这会去除所有前31个控制字符。 从\\ u001F开始的下一个十六进制值是\\ u0020 AKA。 空格之前的所有内容都是换行符,并且为零。

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

我认为以下代码将为您工作:

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();
}

如果计划将字符串用作查询字符串,则应在发送出去之前考虑使用Uri.EscapeUriString()Uri.EscapeDataString() 注意:您可能仍然需要先从char.IsControl()中提取任何内容?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM