Почему нельзя извлечь текст из списка.
Непонятно, что вы имеете в виду под «извлекать текст».Но ясно, что TextPosition
объекты НЕ являются текстовыми, поэтому у вас есть не текстовый список.
В любом случае, это выражение не будет работать.
textPositions.indexOf('w')
textPositions
объект является List<TextPosition>
.Это означает, что метод indexOf
принимает в качестве аргумента Object
: см. javadoc .
Вы вызываете его с символьным литералом в качестве аргумента.Это примитивное значение, а не ссылочное значение, но Java автоматически добавит его в объект Character
.
Так что теперь вы ищете Character
в списке TextPosition
экземпляров.Ни один экземпляр Character
не может возможно быть равным экземпляру TextPosition
.Итак, естественно, indexOf
всегда будет возвращать -1
.
Итак ... как бы вы искали символ в списке TextPosition
объектов?Итак, предполагая 1 , что TextPosition
на самом деле org.apache.pdfbox.util.TextPosition
( javadoc ), мы видим, что у него есть метод getCharacter()
, который возвращает строку символов, хранящихся в этом объекте".
Таким образом, мы могли бы сделать что-то вроде этого:
String w = Character.toString('w');
for (int i = 0; i < textPositions.size(); i++) {
if (textPositions.get(i).character().equals(w)) {
return i;
}
}
return -1;
Это, вероятно, можно было бы сделать более элегантно, используя потоки ...
1- Если мое предположение о TextPosition
неверно, должен быть способ извлечь символы, обозначенные позицией в некоторой форме.