Клас String Tokenizer

Клас StringTokenizer ділить рядок на частини, використовуючи для цього символи-роздільники Послідовність лексем, виділених з рядка, фактично являє собою упорядкований обєкт-перерахування, тому клас StringTokenizer реалізує інтерфейс Enumeration Ви можете передавати обєкти StringTokenizer методам, які обробляють обєкти-перерахування, або скористатися методами Enumeration для проведення ітерацій StringTokenizer також надає ряд методів з більш конкретною типізацією Перерахування StringTokenizer не гарантує фіксації

вихідного стану, але це не має значення, оскільки обєкти String доступні тільки для читання Наприклад, для поділу рядка на лексеми, відокремлювані запитом і прогалинами, може використовуватися наступний цикл:

String str = &quotGone, and forgotten"

StringTokenizer tokens = new StringTokenizer(str, &quot ,&quot)

while (tokenshasMoreTokens()) Systemoutprintln(tokensnextToken())

Кома включена в список роздільників в конструкторі StringTokenizer для того, щоб аналізатор поглинав коми разом з пробілами, залишаючи тільки слова, які повертаються по одному Результат роботи прикладу виглядає наступним чином:

Gone

and forgotten

Клас StringTokenizer містить кілька методів, які визначають, що вважати

словом, чи слід окремо обробляти рядки і числа, і так далі:

public StringTokenizer(String str, String delim, boolean returnTokens)

Конструює обєкт StringTokenizer для рядка str з використанням символів з рядка delim як роздільники Логічне значення returnTokens визначає, чи слід повертати роздільники як лексеми або ж пропускати їх У першому випадку кожен символ-роздільник повертається окремо

public StringTokenizer(String str, String delim)

Еквівалентний StringTokenizer (str, delim, false), тобто роздільники пропускаються public StringTokenizer(String str)

Еквівалентний StringTokenizer (str, \ t \ n \ r), тобто використовуються стандартні символи-

роздільники

public boolean HasMoreTokens()

Повертає true, якщо в рядку ще залишаються лексеми public String nextToken()()

Повертає наступну лексему в рядку Якщо лексем більше немає, збуджується виключення NoSuchElementException

public String nextToken(String  delim)

Замінює набір символів-роздільників на символи з рядка delim і повертає наступну лексему Неможливо змінити набір символів-роздільників, не отримуючи наступній лексеми

public int countTokens()

Повертає кількість лексем, що залишаються в рядку при використанні поточного набору роздільників Воно дорівнює числу можливих викликів next Token перед тим, як буде порушено виняток Якщо вам знадобилося дізнатися кількість лексем, то цей метод працює швидше циклічного виклику nextToken, оскільки рядка-лексеми тільки підраховуються, без витрат на конструювання і повернення значення

Два методи класу StringTokenizer, успадковані від інтерфейсу Enumeration (hasMoreElements і nextElement), еквівалентні методам hasMoreTokens і nextToken відповідно

Якщо вам знадобиться більш потужний механізм для поділу рядка або іншого вхідного значення на лексеми, зверніться до розділу Клас Stream Tokenizer, в якому описується клас з великими можливостями по частині розпізнавання введення Щоб скористатися класом Stream Tokenizer для рядка, створіть для неї обєкт StringBufferInputStream Проте в багатьох випадках буває достатньо і простого класу String Tokenizer

Вправа 129

Напишіть метод, який отримує рядок, ділить її на лексеми з використанням стандартних символів-роздільників і повертає новий рядок, в якій перша буква кожного слова перетворена в заголовний регістр

Глава 13

ЗАСТОСУВАННЯ ТИПІВ

У програмуванні

Я загорніть у папір,

Я намажемо клеєм

Наклейте мені на голову марку Я пришлю тобі себе поштою Вуді Гатрі, Поштова пісня

Типи в мові Java представлені класами Майже для кожного з примітивних типів (int, boolean і т д) існує окремий клас, відомий під назвою оболонки (wrapper) крім того, є клас Class, який представляє типи класів і

інтерфейсів Такі класи володіють наступними перевагами:

Корисні статичні методи для конкретного типу отримують природне місце проживання. Наприклад, методи для перетворення рядка в float є статичними методами класу Float

Те ж саме справедливо і для описових методів і полів У кожному з класів для примітивних числових типів присутні константи MIN_VALUE і MAX_VALUE за допомогою обєкту Class можна отримати доступ до методів, що описує супертіпи класу

Для значень, що відносяться до примітивних типам, можна створювати обєкти-оболонки Потім ці обєкти використовуються в будь-якому контексті, де потрібна посилання на клас Object З цієї причини класи для примітивних типів називаються класами-оболонками

Ієрархія типів для цих класів виглядає наступним чином:

Класи для short або byte відсутні, оскільки ці типи використовуються головним чином з міркувань економії памяті Всі арифметичні обчислення для short і byte виробляються з виразами типу int Щоб зберегти значення типу short або byte в обєкті, користуйтеся класом Integer На жаль, це також означає, що для типів byte і short відсутні константи MIN_VALUE і MAX_VALUE

У цьому розділі показано, як користуватися класами-оболонками У першій частині глави розглядаються обєкти Class, які представляють конкретні класи та інтерфейси

Залишилося частина глави присвячена програмуванню з використанням класів-

оболонок для примітивних типів

Джерело: Арнольд К, Гослінг Д – Мова програмування Java (1997)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*