我的目标是计算docs.google.com类型的超链接在MS Word文档(.docx)中的显示次数。
除了计算超链接外,我还试图计算"纯文本"其中包含" docs.google.com"在它。
例如,考虑一个包含以下文字的word文档:
https://docs.google.com/1234
https://docs.google.com/1235
Link to doc
根据我想要的逻辑,链接总数应为1 + 2 + 1 = 4。 第二个是2,因为显示值是google doc链接,目标URL是google doc链接。
我无法获取"纯文本"的显示值。我的Java代码中的链接类型:
int[] getNumGDocLinksFromWord(String filepath) {
int [] numLinks = {0, 0};
File file = new File(filepath);
try (FileInputStream fis = new FileInputStream(file.getAbsolutePath())) {
XWPFDocument document = new XWPFDocument(fis);
List<XWPFParagraph> paragraphs = document.getParagraphs();
for (XWPFParagraph para : paragraphs) {
numLinks[0] += numOccurrences(para.getText(), GOOG_DOC_URL_HOST);
for(XWPFRun run : para.getRuns()) {
if(run instanceof XWPFHyperlinkRun) {
XWPFHyperlink link = ((XWPFHyperlinkRun)run).getHyperlink(document);
if(link != null && link.getURL().contains(GOOG_DOC_URL_HOST)) {
numLinks[1]++;
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return numLinks;
}
private int numOccurrences(String text, String sequence) {
int n = 0, i = 0;
while (i != -1) {
i = text.indexOf(sequence, i + 1);
if (i != -1) {
n++;
}
}
return n;
}
numLinks [0]捕获显示值的出现次数,numLinks 1捕获超链接的目标值出现次数。
有人可以告诉我如何准确计算这两种类型的值?