Я пытаюсь обернуть все subSuperScripts
фигурными скобками.Я обнаружил, что единственное решение - использовать класс CharacterRun
и оперировать им.Несмотря на то, что моя строка имеет длину ~ 50 символов - paragraph.numCharacterRuns()
возвращает значение 370. Как так?Означает ли это, что я должен перебрать все символьные строки в параграфе и повторить весь процесс с заменой?Ниже мой код и пример строки, 1
рядом с 9
упоминается subSuberScript.
Мой абзац / текстовая строка:
§ 2. Przepisy art. 91 § 1-4 stosuje się odpowiednio.
Здесьмой код:
paragraphsText.forEachIndexed { i, line ->
val paragraph = range.getParagraph(i)
val numCharacterRuns = paragraph.numCharacterRuns()
for (runIndex in numCharacterRuns - 1 downTo 0) {
val characterRun = paragraph.getCharacterRun(runIndex)
val subSuperScriptIndex = characterRun.subSuperScriptIndex
if (subSuperScriptIndex > 0) {
if (characterRun.text().isNotEmpty()) {
val characterStartOffset = characterRun.startOffset - paragraph.startOffset
val characterEndOffset = characterRun.endOffset - paragraph.startOffset
printLog(logLines, "Wrapping superSubScript with braces")
val textRangeChange = paragraph.text().replaceRange(characterStartOffset, characterEndOffset, "(" + characterRun.text() + ")")
paragraph.replaceText(textRangeChange, false)
}
}
}
// ... further operations ...
}
Я делаю это неправильно?Не стесняйтесь использовать Java, если Kotlin не является вашим языком.Я открыт для любого решения, даже для псевдокода.