Spec-Zone .ru
спецификации, руководства, описания, API
|
Приложения, которые форматируют текст или которые выполняют обертывание строки, должны определить местоположение потенциальных разрывов строки. Можно найти эти разрывы строки, или границы, с a BreakIterator
это было создано с getLineInstance
метод:
BreakIterator lineIterator = BreakIterator.getLineInstance(currentLocale);
Это BreakIterator
определяет позиции в строке, где текст может повредиться, чтобы продвинуться следующая строка. Позиции, обнаруженные BreakIterator
потенциальные разрывы строки. Фактические разрывы строки, выведенные на экран на экране, возможно, не то же самое.
Два примера, которые следуют за использованием markBoundaries
метод BreakIteratorDemo.java
показать границы строки, обнаруженные a BreakIterator
. markBoundaries
метод указывает на границы строки, печатая каре (^) ниже целевой строки.
Согласно a BreakIterator
, граница строки происходит после завершения последовательности пробельных символов (пространство, вкладка, новая строка). В следующем примере отметьте, что можно повредить строку на любой из обнаруженных границ:
She stopped. She said, "Hello there," and then went on. ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
Потенциальные разрывы строки также сразу происходят после дефиса:
There are twenty-four hours in a day. ^ ^ ^ ^ ^ ^ ^ ^ ^
Следующий пример повреждает длинную строку текста в строки фиксированной длины с вызванным методом formatLines
. Этот метод использует a BreakIterator
определять местоположение потенциальных разрывов строки. formatLines
метод короток, прост, и, благодаря BreakIterator
, независимый от локали. Вот исходный код:
static void formatLines( String target, int maxLength, Locale currentLocale) { BreakIterator boundary = BreakIterator. getLineInstance(currentLocale); boundary.setText(target); int start = boundary.first(); int end = boundary.next(); int lineLength = 0; while (end != BreakIterator.DONE) { String word = target.substring(start,end); lineLength = lineLength + word.length(); if (lineLength >= maxLength) { System.out.println(); lineLength = word.length(); } System.out.print(word); start = end; end = boundary.next(); } }
BreakIteratorDemo
программа вызывает formatLines
метод следующим образом:
String moreText = "She said, \"Hello there,\" and then " + "went on down the street. When she stopped " + "to look at the fur coats in a shop + " "window, her dog growled. \"Sorry Jake,\" " + "she said. \"I didn't know you would take " + "it personally.\""; formatLines(moreText, 30, currentLocale);
Вывод от этого звонка formatLines
:
She said, "Hello there," and then went on down the street. When she stopped to look at the fur coats in a shop window, her dog growled. "Sorry Jake," she said. "I didn't know you would take it personally."