Skip to main content

Метод Position::getPreviousRange

Метод возвращает диапазон, который расположен перед текущим диапазоном. Размеры текущего и предыдущего диапазонов зависят от выбранной единицы текста. Если выбранная единица текста отлична от Paragraph, то работа метода Position::getPreviousRange ограничена текущим абзацем.

Вызов​


boost::optional<Range> getPreviousRange(TextUnit textUnit)

Параметры​

  • textUnit: единица текста, определяющая размеры диапазонов, тип TextUnit.

Возвращает​

  • предыдущий диапазон документа, тип Range.

Пример для текстового документа​


Position sentenceBegin = document.getRange().getBegin().getNextRange(TextUnit::Sentence).get().getBegin();
Range previousSentence = sentenceBegin.getPreviousRange(TextUnit::Sentence).get();
Range previousWord = sentenceBegin.getPreviousRange(TextUnit::Word).get();
while (previousWord.getContentEnd().compare(previousWord.getBegin()) == 1)
{
previousWord = previousWord.getBegin().getPreviousRange(TextUnit::Word).get();
}
Range previousCharacter = sentenceBegin.getPreviousRange(TextUnit::Character).get();
previousCharacter = previousCharacter.getBegin().getPreviousRange(TextUnit::Character).get();
previousCharacter = previousCharacter.getBegin().getPreviousRange(TextUnit::Character).get();

std::printf("%s", previousSentence.extractText().c_str());
// Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
std::printf("%s", previousWord.extractText().c_str()); // aliqua
std::printf("%s", previousCharacter.extractText().c_str()); // a

Пример для табличного документа​


Table sheet = document.getBlocks().getTable(0).get();
Cell cell = sheet.getCell("B2");
Position cellEnd = cell.getRange().getContentEnd();
Range sentence = cellEnd.getPreviousRange(TextUnit::Sentence).get();

std::printf("%s", sentence.extractText().c_str()); // Second sentence.