Spec-Zone .ru
спецификации, руководства, описания, API
След: Интернационализация
Урок: Работа с текстом
Раздел: Обнаружение текстовых Границ
Word Boundaries
Домашняя страница > Интернационализация > Работа с текстом

Word Boundaries

Вы вызываете getWordIterator метод, чтобы инстанцировать a BreakIterator это обнаруживает границы слова:

BreakIterator wordIterator =
    BreakIterator.getWordInstance(currentLocale);

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

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

Пример, который следует, который является из программы BreakIteratorDemo, отмечает границы слова в некотором тексте. Программа создает BreakIterator и затем вызовы markBoundaries метод:

Locale currentLocale = new Locale ("en","US");

BreakIterator wordIterator =
    BreakIterator.getWordInstance(currentLocale);

String someText = "She stopped. " +
    "She said, \"Hello there,\" and then went " +
    "on.";

markBoundaries(someText, wordIterator);

markBoundaries метод определяется в BreakIteratorDemo.java. Этот метод отмечает границы, печатая каре (^) ниже целевой строки. В коде, который следует, заметьте while цикл, где markBoundaries сканирует строку, вызывая next метод:

static void markBoundaries(String target, BreakIterator iterator) {

    StringBuffer markers = new StringBuffer();
    markers.setLength(target.length() + 1);
    for (int k = 0; k < markers.length(); k++) {
        markers.setCharAt(k,' ');
    }

    iterator.setText(target);
    int boundary = iterator.first();

    while (boundary != BreakIterator.DONE) {
        markers.setCharAt(boundary,'^');
        boundary = iterator.next();
    }

    System.out.println(target);
    System.out.println(markers);
}

Вывод markBoundaries метод следует. Отметьте, где каре (^) происходят относительно знаков препинания и пробелов:

She stopped.  She said, "Hello there," and then
^  ^^      ^^ ^  ^^   ^^^^    ^^    ^^^^  ^^   ^

went on.
^   ^^ ^^

BreakIterator class облегчает выбирать слова изнутри текста. Вы не должны записать свои собственные подпрограммы, чтобы обработать правила пунктуации различных языков; BreakIterator class делает это для Вас.

extractWords метод в следующих извлечениях в качестве примера и словах печатных изданий для данной строки. Отметьте, что этот метод использует Character.isLetterOrDigit избегать печатать "слова", которые содержат пробелы.

static void extractWords(String target, BreakIterator wordIterator) {

    wordIterator.setText(target);
    int start = wordIterator.first();
    int end = wordIterator.next();

    while (end != BreakIterator.DONE) {
        String word = target.substring(start,end);
        if (Character.isLetterOrDigit(word.charAt(0))) {
            System.out.println(word);
        }
        start = end;
        end = wordIterator.next();
    }
}

BreakIteratorDemo программа вызывает extractWords, передача этого та же самая целевая строка используется в предыдущем примере. extractWords метод распечатывает следующий список слов:

She
stopped
She
said
Hello
there
and
then
went
on

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

Предыдущая страница: Символьные Границы
Следующая страница: Границы Предложения