Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Программа'
0 .13 0.0 .13 Чт. 0.0 .13 1.0 .13 7/10/14 70 Суббота .0 .13 3.0 .13 Вс. 3.0 .13 4.0 .13 7/11/14 70 Среда .0 .13 7.0 .13 Чт. 7.0 .13 8.0 ....полностью>>
'Документ'
Министерство образования Республики Коми сообщает, что в 2012 году на территории Российской Федерации, в том числе в Республике Коми, будет продолжена...полностью>>
'Конкурс'
Ведущий: Братья и друзья, сыновья и дочери земли Русской! Вот собрались мы вместе, так составим слово к слову, отбросим печаль и возвеселим Русскую зе...полностью>>
'Руководство'
организации досуга военнослужащих, гражданского персонала и членов и семей, популяризации служебно-прикладных и массовых видов спорта, здорового и акт...полностью>>

Главная > Документ

Сохрани ссылку в одной из сетей:
Информация о документе
Дата добавления:
Размер:
Доступные форматы для скачивания:

Учим Java. Работа со строками. Окончание.

Продолжая разговор об средствах Java для обработки символьной информации нельзя обделить вниманием такие классы как StringBuffer и StringTokenizer. Первый представляет собой строку, которую можно изменять, в отличие от String. Второй предоставляет возможность разбора строк. В этой статье мы поговорим об основных методах этих классов, а также о том, как и где их можно применять.

Итак, класс StringBuffer. Рассмотрим два его конструктора:

StringBuffer()

Этот не принимает никаких параметров и просто создает объект класса StringBuffer.

StringBuffer(String s)

Этот принимает ссылку на объект класса String и создает экземпляр StringBuffer на основе этой строки.

Создадим какую-нибудь ссылку на объект класса StringBuffer:

String s = "this is text";

StringBuffer sb = new StringBuffer(s);

Далее по очередности рассмотрим методы класса StringBuffer. Начнем с методов для изменения содержимого буфера, т.е. с основной особенности этого класса.

setCharAt(int i, char ch)

Измениет символ с индексом i на символ ch.

setLength(int length)

Этот метод укорачивает буфер StringBuffer до заданной длины. Здесь значение переменной length должно быть меньше длины буфера.

append(...)

Добавляет в конец буфера строку. Т.е. преобразует объект в строку и добавляет полученное значение в конец заданного буфера. Вот список типов, которые можно использовать: Object, String, char[], boolean, char, int, long, float, double.

insert(...)

В отличие от append() может добавлять строку в любое место заданного буфера, иными словами вставлять подстроку в буфер. Список используемых типов смотри выше.

reverse()

Реверсирует заданную строку. Т.е. перестраивает порядок следования символов в строке на обратный. Очень полезный метод.

delete(int begin, int end)

Удаляет последовательность символов из буфера начиная с позиции begin, заканчивая позицией end.

deleteCharAt(int i)

Удаляет символ из буфера в позиции i.

StringBuffer replace(int start, int end, String s)

Заменяет в строке символы от start до end на строку s. Размер буфера изменяется в соответствии с размером сроки s. Если ее длина больше количества символов в интервале start - end, то тогда буфер увеличивается в длине, если меньше - укорачивается. Результат-буфер, возвращается методом.

StringBuffer insert(int i, char[] chars, int start, int count)

Иная версия обычного insert(...). Этот вариант insert() вставляет в буфер count символов массива символов chars, начиная с позиции start в массиве, после элемента с номером i в буфере. Резултат будет возвращен методом.

Теперь немного о способах преобразования экземпляров класса StringBuffer. Для того, чтобы из StringBuffer получить строку, можно воспользоваться уже известным вам методом toString(). Или же передать экземпляр буфера в качестве параметра конструктору String. Если возникла необходимость преобразовать StringBuffer в массив символов (char[]), то можно обойтись методом getChars():

getChars(int sb, int se, char[] ds, int dsb)

Символы из буфера в диапозоне sb и se копируются в массив ds начиная с позиции dsb в массиве. Последний символ с номером se не учитывается и скопирован не будет.

Очень часто может понадобиться ограничить размер буфера. По умолчанию вы можете вставлять данные в буфер пока не исчерпаете все доступные ресурсы. А это не всегда допустимо, особенно когда StringBuffer заполняется из ненадежного источника: поток, файл и т.д. Поэтому, чтобы установить максимальный размер буфера введен специальный конструктор:

StringBuffer(int limit)

limit - ввместимость буфера.

На последок посмотрим на два метода для работы с ограничением на размер буфера:

int capacity()

Возвращает текущее значение емкости буфера. Емкость - это и есть максимальный размер буфера.

void ensureCapacity(int i)

Изменяет значение вместимости буфера на i.

На этом обзор класса StringBuffer можно завершить. Подводя итог, еще раз скажу что StringBuffer предназначен для промежуточных операций над строками; операции над которым не требуют создания промежуточных экземпляров класса, как String например, и вполне могут изменять содержимое буфера. Также класс StringBuffer может без особых трудностей преобразован как в String, так и в массив символов.

Следующий класс из сегодняшнего обзора - StringTokenizer. Как уже было сказано в введении, он позволяет разбивать на части строки по заданным delimiters(разделители). Он сильно напоминает класс StreamTokenizer. Они оба выполняют фактически одни и те же функции, только StreamTokenizer работает и разбирает потоки, а StringTokenizer - строки.

Для начала конструктор:

StringTokenizer(String s, String delimiters)

Первый параметр s задает строку, которую предстоит анализировать, а второй (delimiters) - список разделителей.

StringTokenizer(String s, String delimiters, boolean returnTokens)

Аналогично предыдущему. returnTokens определяет возвращать ли разделители вместе с лексемами? Если true - то будут возвращены все присутствующие в строке разелители вместе с тем, что стоит между ними(лексемы).

StringTokenizer(String s)

Тоже, когда returnTokens = false, а delimiters = " \t\n\f\r".

Методы:

boolean hasMoreTokens()

Возвращает true, если может быть возвращена еще хотя бы одна лексема.

String nextToken()

Возвращает очередную лексему. Повторно вернуть ее не удастся без повторного создания StringTokenizer, поэтому если предстоит использовать это значение многократно, то его следует сохранить в какой-нибудь переменной. Если в очереди нет больше лексем, то выбрасывается исключение NoSuckElementException.

String nextToken(String delimiters)

Тоже что и предыдущее, только с установкой нового набора разделителей. Если в очереди нет больше лексем, то выбрасывается исключение NoSuckElementException.

int countTokens()

Возвращает количество лексем, которые находятся в очереди на возвращение методом nextToken().

Вот почти весь StringTokenizer. Ничего сложно здесь нет. Для примера давайте разберем введенную с клавиатуры строку, состоящую из пары "параметр = значение" и выведем на экран "параметр -> значение".

BufferedReader br = new BufferedReader(new InputStreamReader());

String s = br.readLine().trim();

StringTokenizer st = new StringTokenizer(s, "=");

if (st.countTokens() >= 2) {

System.out.println(st.nextToken().trim() + " -> " + st.nextToken().trim());

}

Вот и весь разбор.

Наш обзор методов работы со строками подошел к своему завершению. Надеюсь он оказался кому-то полезным. Работа со строками в Java представлена очень гибкими средствами-классами, возможности которых должен знать каждый, кто программирует на Java. Жду ваших писем.

Алексей Литвинюк (c)

litvinuke@tut.by



Похожие документы:

  1. 6 учтена работа, превосходящая запланированные объемы, а также дополнительные работы. Помимо этого есть и прочие улучшения, необходимых для более качественной работы. Патч 1 2

    Документ
    ... актов. 12. В актах колонки "Начало работ", "Окончание работ" при незаполненных значениях отображались некорректные ... отключен, при изменении параметров объекта - "Работа со строками". При объединении объектов, при условии ...
  2. Звуковое оборудование и программы. Основы работы со звуком на компьютере

    Документ
    ... оборудование и программы. 3. Основы работы со звуком на компьютере. 1. Кодирование ... , линию раскадровки, строку состояния. Строка меню предназначена для ... поменять последовательность (начало и окончание) воспроизведения видеоклипов? Как поменять ...
  3. Методические указания по выполнению курсовых работ по дисциплине «Системное программное обеспечение» для студентов, обучающихся по специальностям 210100, 210200 и направлению 550200

    Методические указания
    ... с тем PostScript обладает вычислительными возможностями, работает со строками текста, поддерживает ввод/вывод. Все ... функция не найдены. • По окончании работы пользователь завершает работу с интерпретатором, вводя команду exit ...
  4. Пример настоящей программы для компьютера на языке Лого 16 > Последовательность работы программиста на компьютере 17 > Основные приемы программирования 18 Глава. 2 Устройство и работа компьютера 21

    Документ
    ... . Работа со строками Со строковым типом String мы познакомились в 0.14. Как можно сэкономить память, работая со строками ... программы (по ReadLn или по окончанию работы). Чтобы результаты не успели убежать ...
  5. Данное пособие предназначено для начинающих изучение технологии ооп для проектирования систем управления на основе С++. Работа №1

    Документ
    ... функций для работы со строками из библиотеки string.h в таблице 2: Таблица 2 - Функции работы со строками Функция Прототип ... . Пример: Ввести с клавиатуры строку символов. Признак окончания ввода строки - нажатие клавиши "Ввод". Программа ...

Другие похожие документы..