Я хочу выбрать слово в XML (Автор кислорода). Кислород не имеет специальной функции для этого, и я пытаюсь написать функцию для этого. Если текущий тег имеет несколько тегов, мой код не работает должным образом. Где я ошибся?
for (Object i : arrFind) {
if (textContains.contains(i.toString())) {
start = an.getStartOffset();
end = an.getEndOffset();
authorAccess.getEditorAccess().select(start, end);
authorAccess.getEditorAccess().selectWord();
selectedEnd = authorAccess.getEditorAccess().getSelectionEnd();
authorAccess.getEditorAccess().select(
selectedEnd - (textContains.length() - textContains.indexOf(i.toString())), selectedEnd);
inst = authorAccess.getEditorAccess().getSelectedText();
if (inst.startsWith(" ")) {
authorAccess.getEditorAccess().select(
selectedEnd - (textContains.length() - textContains.indexOf(i.toString())) + 1,
selectedEnd - (textContains.length() - textContains.indexOf(i.toString())) + 1);
} else {
authorAccess.getEditorAccess().select(
selectedEnd - (textContains.length() - textContains.indexOf(i.toString())),
selectedEnd - (textContains.length() - textContains.indexOf(i.toString())));
}
int currentOffset = authorAccess.getEditorAccess().getCaretOffset();
String startText = "";
String endText = "";
int indexStartOffset = 0;
int indexEnd = 0;
int indexStart = 0;
int resultEndOffset = end - currentOffset;
int resultStartOffset = currentOffset - start;
try {
endText = authorAccess.getDocumentController().getFilteredText(currentOffset, resultEndOffset);
} catch (BadLocationException e1) {
e1.printStackTrace();
}
if (endText.contains(" ")) {
indexEnd = endText.indexOf(" ");
} else {
indexEnd = resultEndOffset;
}
try {
startText = authorAccess.getDocumentController().getFilteredText(start, resultStartOffset);
} catch (BadLocationException e) {
e.printStackTrace();
}
if (startText.contains(" ")) {
indexStartOffset = startText.lastIndexOf(" ");
}
indexStart = startText.length() - indexStartOffset;
if (inst.startsWith(" ")) {
authorAccess.getEditorAccess().select(currentOffset - indexStart + 1, currentOffset + indexEnd);
} else {
authorAccess.getEditorAccess().select(currentOffset, currentOffset + indexEnd);
}
}