如何从 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 字符串中删除控制字符的主要内容,如果未能解决你的问题,请参考以下文章