如何从 UTF8 字符串中删除控制字符

Posted

技术标签:

【中文标题】如何从 UTF8 字符串中删除控制字符【英文标题】:How to remove control chars from UTF8 string 【发布时间】:2011-05-28 21:40:45 【问题描述】:

我有一个处理文档内容的 VB.NET 程序。 该程序将大量文档作为“批量”处理(>200 万份文档;总 1TB 卷) 其中一些文档可能包含控制字符或 f0e8(http://www.fileformat.info/info/unicode/char/f0e8/browsertest.htm) 等字符。

有没有一种简单且特别快速的方法来删除这些字符?(除了空格、换行符、制表符...) 如果答案是正则表达式:有人为我提供完整正则表达式吗?

谢谢!

【问题讨论】:

控制字符有什么问题?我假设它们适合文档本身。 该程序使用不同的解析器(word、pdf、...)并处理纯文本和 xml 文件。有时(提取的)“body”/content 字符串仍然包含烦人的字符,例如“f0e8”。所以我必须自己删除它们 utf8-chartable.de/… 说 f0e8 是一个 utf8 字符还是我错了? 是的,提取器不会删除所有“设计”字符。但我无法更改它 未来参考请参阅此处的“Unicode 字符属性”部分:regular-expressions.info/unicode.html 【参考方案1】:

试试

resultString = Regex.Replace(subjectString, "\pC+", "");

这将从您的字符串中删除所有“其他”Unicode 字符(控制、格式、私人使用、代理和未分配)。

【讨论】:

非常感谢 :D 运行良好!我希望它不会减慢这个过程太多。 为什么@在 Visual Basic 中不被接受?我在 @ 处收到“预期表达式”错误。 糟糕。我忽略了 VB 部分,我对 .NET 标记的下意识反应是提供 C# 代码 sn-p。会编辑。谢谢! 有没有概述“\pC+”删除了哪些字符?谢谢! 查看unicode.org/charts,向下滚动到底部并查看最右边的列。【参考方案2】:

这是控制字符的 POSIX 正则表达式:[:cntrl:],来自***上的 Regular Expression。

【讨论】:

Posix 已经死了,但愿它支离破碎。

以上是关于如何从 UTF8 字符串中删除控制字符的主要内容,如果未能解决你的问题,请参考以下文章

从控制台中删除单个字符

c++ win32从键盘获取utf8字符

在 Windows 控制台中正确打印 utf8 字符

如何在 Ruby 中删除 4 字节 utf-8 字符?

java中DataInputStream如何读取我们控制台的字符串

如何使用 AngularJs 从输入或文本区域中删除特殊字符?