首页 > 解决方案 > 解析 docx 并忽略图标

问题描述

我需要从 docx 文档中提取所有单词的列表,首先我这样做是为了创建一个包含所有单词的字符串:

String newTxt = consultantId.toString();
if (filePath.contains("docx")){
   wordCounter.writeDocxToTxt(newTxt,wordCounter.parseDOCX(filePath));
}else if (filePath.contains("doc")){
   wordCounter.writeDocxToTxt(newTxt,wordCounter.parseDOC(filePath));
}
        
public String parseDOCX(String fileNameorFilePath )
    {
        try {
            XWPFDocument docx = new XWPFDocument(new FileInputStream(fileNameorFilePath));
            XWPFWordExtractor xwpfWordExtractor = new XWPFWordExtractor(docx);
            return xwpfWordExtractor.getText();
        }
        catch ( Exception error )
        {
            throw  new RuntimeException(error);
        }
    }

public void writeDocxToTxt(String newTxtName, String parsedDocx) throws Exception
    {
       BufferedWriter bw = new BufferedWriter(new FileWriter(new File(newTxtName)));
       bw.write(parsedDocx);
       if(bw!=null)
          bw.close();
    }

它有效,我得到了每个单词的字符串。但我不想得到像下面的电话图标这样的字符:

在此处输入图像描述

是否可以忽略图标?我怎样才能做到这一点?

标签: java

解决方案


它可能来自字体wingdings等,但看起来你很幸运,它是一个Unicode符号。

String s = "\u260E"; // Black telephone
s = s.replaceAll("\\p{So}", " ");

whereSo代表其他符号请参阅Pattern的 javadocs 。


推荐阅读