Попробуйте:
String s = // long string
s.replaceAll("(.{10})", "$1<br>");
РЕДАКТИРОВАТЬ: Выше работает ... большую часть времени. Я поиграл с этим и столкнулся с проблемой: поскольку он создает шаблон по умолчанию внутри, он останавливается на новых строках. чтобы обойти это, вы должны написать это по-другому.
public static String insert(String text, String insert, int period) {
Pattern p = Pattern.compile("(.{" + period + "})", Pattern.DOTALL);
Matcher m = p.matcher(text);
return m.replaceAll("$1" + insert);
}
и проницательный читатель обнаружит еще одну проблему: вам нужно избегать специальных символов регулярного выражения (например, "$ 1") в тексте замены, или вы получите непредсказуемые результаты.
Мне также стало любопытно, и я сравнил эту версию с версией Джона. Это на порядок медленнее (1000 замен для файла 60 КБ заняли 4,5 секунды, а 400 мс его). Из 4,5 секунд только около 0,7 секунд фактически строили паттерн. Большая часть этого была на сопоставлении / замене, так что она даже не привела к такой оптимизации.
Обычно я предпочитаю менее многословные решения для вещей. В конце концов, больше кода = больше потенциальных ошибок. Но в этом случае я должен признать, что версия Джона - которая действительно является наивной реализацией (я имею в виду хороший способ ) - значительно лучше.