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."

Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Границы Предложения
Следующая страница: Преобразование латинских Цифр к Другим Цифрам Unicode