我们可能会通过各种方式将不需要的非 ascii 字符放入文件内容或字符串中,例如从 MS Word 文档或 Web 浏览器复制和粘贴文本、PDF 到文本的转换或 HTML 到文本的转换。我们可能希望在将文件用于应用程序之前删除不可打印的字符,因为当我们开始对此文件的内容进行数据处理时,它们被证明是有问题的。
在这个 Java 正则表达式示例中,我使用 正则表达式 来搜索和替换非 ascii 字符,甚至还删除不可打印的字符。
用于从不需要的字符和不可打印的字符中清除字符串内容的 Java 程序。
private static String cleanTextContent(String text) { // strips off all non-ASCII characters text = text.replaceAll("[^\\x00-\\x7F]", ""); // erases all the ASCII control characters text = text.replaceAll("[\\p{Cntrl}&&[^\r\n\t]]", ""); // removes non-printable characters from Unicode text = text.replaceAll("\\p{C}", ""); return text.trim(); }
2.1.具有非 ascii 内容的文件内容
我将读取包含以下内容的文件并删除所有非 ascii 字符,包括不可打印的字符。
öäü how to do in java . com A função, Ãugent
package com.cundage.demo; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.stream.Stream; public class CleanTextExample { public static void main(String[] args) { File file = new File("c:/temp/data.txt"); String uncleanContent = readFileIntoString(file); System.out.println(uncleanContent); String cleanContent = cleanTextContent(uncleanContent); System.out.println(cleanContent); } private static String readFileIntoString(File file) { StringBuilder contentBuilder = new StringBuilder(); try (Stream<String> stream = Files.lines(Paths.get(file.toURI()))) { stream.forEach(s -> contentBuilder.append(s).append("\n")); } catch (IOException e) { System.out.println("Error reading " + file.getAbsolutePath()); } return contentBuilder.toString(); } private static String cleanTextContent(String text) { // strips off all non-ASCII characters text = text.replaceAll("[^\\x00-\\x7F]", ""); // erases all the ASCII control characters text = text.replaceAll("[\\p{Cntrl}&&[^\r\n\t]]", ""); // removes non-printable characters from Unicode text = text.replaceAll("\\p{C}", ""); return text.trim(); } }
程序输出。
öäü how to do in java . com A função, Ãugent how to do in java . com A funo, ugent
您可以根据需要随意修改 cleanTextContent()
方法,并根据需要添加/删除正则表达式。
快乐学习!!
地址:https://www.cundage.com/article/java-clean-ascii-text-non-printable-chars.html