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

我发现了这个问题,但它也删除了所有有效的utf-8字符(返回一个空字符串,而有效的utf-8字符加上控制字符)。 当我读到utf-8control 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的下一个hex值是\ u0020空间。 在太空之前的一切都是换行和无效的废话。

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

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