我有一个很大的文件,并且该文件包含很多非法字符,如下图所示,但并非全部。它们种类繁多,因此无法全部搜索并替换它们。 有没有一种方法可以删除这些字符。我尝试了很多解决方案,例如转换为ANSI或某些正则表达式,但是它们没有用。请帮忙。
编辑:即使任何人都可以告诉我如何在Java中删除这些字符,也可以。
答案 0 :(得分:0)
如果您知道期望使用哪种类型的字符,则可以删除白名单过滤器,而不是删除特定字符。
根据this answer, which explains how to remove emoticons,您可以尝试:
String characterFilter = "[^\\p{L}\\p{M}\\p{N}\\p{P}\\p{Z}\\p{Cf}\\p{Cs}\\s]";
String emotionless = aString.replaceAll(characterFilter, "");
要了解可用的\p{}
个组,请查看Classes for Unicode scripts, blocks, categories and binary properties docs:
\ p {IsLatin}拉丁字母字符(脚本)
\ p {InGreek}希腊语块中的一个字符(块)
\ p {Lu}大写字母(类别)
\ p {IsAlphabetic}字母字符(二进制属性)
\ p {Sc}货币符号
\ P {InGreek}除希腊语块(取反)中的一个字符外的任何字符
[\ p {L} && [^ \ p {Lu}]]除大写字母(减法)之外的任何字母