В предыдущих разделах мы узнали, как использовать метод Split() класса String для декомпозиции строки. В этом разделе мы узнаем, как использовать объект StringTokenizer для декомпозиции строки. В отличие от метода Split(), объект StringTokenizer. не использует регулярные выражения в качестве разделителя.
Прежде всего, нам необходимо знать понятие — символы языка . Так называемые языковые символы означают, что когда мы анализируем строку, мы разлагаем строку на слова, которые можно использовать самостоятельно, и эти слова называются языковыми символами.
Например, для строки Добро пожаловать, если в качестве разделителя строки используются пробелы, то в строке три слова, то есть три языковых символа. Для строки, пожалуйста, если в качестве разделителя строки используется запятая, то строка также содержит три языковых символа.
Когда мы анализируем строку и разлагаем ее на слова, которые можно использовать независимо, мы можем использовать класс StringTokenizer в пакете java.util, который имеет два часто используемых конструктора:
Создайте синтаксический анализатор для строки s, используя знаки-разделители по умолчанию , то есть символы пробела (несколько пробелов рассматриваются как один пробел), символы перевода строки, символы возврата каретки, символы табуляции и символы перевода в качестве разделительных знаков.
Создает анализатор строки s. Символы в параметре delim используются в качестве разделителей.
Примечание . Любая комбинация разделителей по-прежнему является разделителем.
Например:
StringTokenizerfenxi=newStringTokenizer(вы,добро пожаловать);StringTokenizerfenxi=newStringTokenizer(вы;добро пожаловать,,;);
Вызовите объект StringTokenizer как анализатор строк. Анализатор может использовать метод nextToken() для получения символов языка в строке один за другим. При каждом вызове метода nextToken() в строке будет получен следующий символ языка. получен символ языка, значение счетной переменной в анализаторе строк автоматически уменьшается на 1. Начальное значение счетной переменной равно количеству слов в строке.
Обычно цикл while используется для получения языковых символов один за другим. Для управления циклом можно использовать метод hasMoreTokens() в классе StringTokenizer, пока в строке есть языковые символы, то есть значение. переменной count больше 0, этот метод возвращает true, в противном случае он возвращает false. Кроме того, вы можете в любой момент вызвать анализатор метод countTokens(), чтобы получить значение переменной count в анализаторе.
Например:
importjava.util.*;publicclassMain{publicstaticvoidmain(Stringargs[]){Strings=welcometodotcpp(спасибо),nicetomeetyou;StringTokenizerfenxi=newStringTokenizer(s,(),);intnumber=fenxi.countTokens(); while(fenxi.hasMoreTokens() ){Stringstr=fenxi.nextToken();System.out.print(str+);}System.out.println(Всего слов: +номер+);}}
Результаты бега следующие:
Welcometodotcppthankyounicetomeetyou всего слов: 9