Моя цель - подсчитать, сколько раз гиперссылка типа docs.google.com появляется в документе MS Word (.docx).
В дополнение к подсчету гиперссылки я также пытаюсьсчитать "простой текст", который содержит "docs.google.com" в нем.
Например, рассмотрим документ Word, который имеет следующий текст:
https://docs.google.com/1234
https://docs.google.com/1235
Ссылка на документ
Согласно моей желаемой логике, общее количество ссылок должно быть 1 + 2 + 1 = 4. Второе - 2, потому что отображаемое значение - документ Google.ссылка, а также целевой URL-адрес - это ссылка на документ Google.
У меня возникают проблемы с отображением значений для ссылок типа "обычный текст" в моем коде 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 фиксирует вхождения целевых значений гиперссылки.
Может кто-нибудь подсказать, как можно точно рассчитать эти два типа значений?