从记事本++或Java中的文件中删除非法字符

时间:2018-07-12 10:56:56

标签: java notepad++

我有一个很大的文件,并且该文件包含很多非法字符,如下图所示,但并非全部。它们种类繁多,因此无法全部搜索并替换它们。 有没有一种方法可以删除这些字符。我尝试了很多解决方案,例如转换为ANSI或某些正则表达式,但是它们没有用。请帮忙。

编辑:即使任何人都可以告诉我如何在Java中删除这些字符,也可以。

these are just few characters but there are many many different characters

1 个答案:

答案 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}]]除大写字母(减法)之外的任何字母