Spec-Zone .ru
спецификации, руководства, описания, API
|
Вы вызываете 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