Java: как я могу отформатировать текст в OutputStream по ширине консоли пользователя? - PullRequest
4 голосов
/ 07 ноября 2011

В частности, я хотел бы, чтобы текст, отправляемый в OutputStream пользователя, имел перенос слов, чтобы при переходе текста на новую строку слова не разбивались. Так что вместо этого:

The quick brown fox j
umps over the lazy do
g.

Это будет отображаться в консоли следующим образом:

The quick brown fox 
jumps over the lazy 
dog.

Один из известных мне вариантов - написать такой метод для переноса текста на определенную ширину символа:

wrapText(String text, int width)

Но я бы предпочел, чтобы текст просто автоматически переносился на текущую ширину консоли пользователя. Есть какой-либо способ сделать это? Какие-нибудь объекты в Java, которые могут мне помочь? Спасибо!

Ответы [ 2 ]

3 голосов
/ 07 ноября 2011

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

Однако я не понимаю, какопределил (автоматически, кросс-платформенный) ширину консоли пользователя.

2 голосов
/ 07 ноября 2011

Чтобы получить ширину консоли, вы можете использовать библиотеку JLine .Это не чистая Java и имеет некоторый нативный код, но обладает необходимой функциональностью и работает в Windows, Max и Linux.

В JLine для получения ширины консоли используйте класс Terminal иЗвоните getTerminalWidth().

...