Java - Разрезание строки на несколько строк за один проход - PullRequest
0 голосов
/ 30 сентября 2019

Я читаю таблицу из файла PDF, используя PDFBox. Таблица немного сложна (некоторые части имеют больше столбцов, чем другие, имеют разделенные блоки и т. Д.), Поэтому данные не идеально структурированы. Однако мне удалось получить структурированные данные достаточно , чтобы я мог извлечь из них важные биты.

Из-за характера данных я хочу разбить строку (представляющую строку данных из всех столбцов) на несколько частей, представляющих каждый столбец. Я хочу сделать это, прежде чем избавиться от пробелов, потому что формат таблицы должен быть сохранен и некоторые столбцы могут быть пустыми. Например:

  Monday            Tuesday         Wednesday

 Spaghetti         Salad               Apple
  Meatballs                          Sandwich
 Garlic Bread       Chicken            Cheese   

Вы видите, что данные не идеально выровнены, и могут быть пробелы, такие как вторая строка во вторник, которые должны быть сохранены. Мой план состоит в том, чтобы жестко кодировать каждый столбец (скажем, до 20 символов для каждого столбца, размер каждого столбца может отличаться ), прежде чем избавляться от пробелов.

Мой вопрос: какой самый быстрый и эффективный способ нарезать строку в массив строк? Я мог бы использовать String.substring (), но я бы не стал делать это для каждого столбца. Есть ли способ сделать все это за один проход?

1 Ответ

2 голосов
/ 30 сентября 2019

Попробуйте использовать String.trim и String.split (например, для пробела):

String s = "  Monday            Tuesday         Wednesday  ";
System.out.println(Arrays.toString(s.trim().split("\\s+")));

Выход:

[Monday, Tuesday, Wednesday]

Это делается для каждой строки. Вы можете сказать, является ли строка пустой, потому что результирующий массив будет иметь размер 0.

...