Эффективный способ разделить строку - PullRequest
1 голос
/ 06 сентября 2010

У меня есть строка, которая может быть очень длинной, поэтому я хочу разбить ее на массив строк, чтобы в каждой позиции длина строки была меньше указанного числа.Разделение может быть сделано только в пустом месте или после символа пунктуации, потому что мне нужно, чтобы каждый фрагмент имел смысл, когда он читается.Это что-то вроде текстового процессора, поэтому, когда слово не помещается в текущей строке, оно переходит на следующую строку.

Я думал о том, чтобы разбить данную строку в пробелах или знаках препинания с помощью регулярногоВыражение и объединение их контролируют длину StringBuilder, но я думаю, что разбиение по всем словам и последующее присоединение к ним могут быть не очень эффективными.

Какой самый эффективный способ выполнить это?Есть ли какая-нибудь библиотека, которая могла бы помочь в этой работе?

Большое спасибо.

Ответы [ 3 ]

4 голосов
/ 06 сентября 2010

Вот что вы можете попробовать:

Допустим, вам нужно разделить строки длиной не более n символов.

  • Начать позицию 0. Переместить курсор n символов вперед.
  • Перемещайте курсор на 1 символ назад, пока не найдете символ, по которому можно разделить.
  • Разделите строку, сохраните первую часть и повторите на второй части.

Я думаю, что это может быть более эффективным, чем разделение, чем объединение ваших строк.

2 голосов
/ 06 сентября 2010

Apache Commons может помочь с этим.

http://commons.apache.org/lang/api-2.5/index.html

См. WordUtils статическая функция static String wrap(String str, int wrapLength) - Переносит одну строку текста, идентифицируя слова по ' '.

Он также с открытым исходным кодом, так что если вам нужно что-то более конкретное, просто посмотрите на источник ...

0 голосов
/ 06 сентября 2010

Я бы выбрал самый простой подход, о котором я могу подумать, и буду беспокоиться о возможных проблемах эффективности или производительности, если они действительно будут проблемой.

...