Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Класс StringTokenizer(класс java.util)




Лабораторная работа 4. Работа со строками

Задание 1.

В заданной строке-предложении со стандартным набором символов-разделителей между словами:

1. Переставить слова-числа в обратном порядке, оставив порядок следования остальных слов без изменения;

2. Поменять порядок слов с указанной длиной на обратный, оставив порядок следования остальных слов неизменным;

3. Поменять порядок слов, состоящих только из букв, на обратный, оставив порядок следования остальных слов прежним;

4. Поменять порядок слов, состоящих только из гласных букв, на обратный, оставив порядок следования остальных слов прежним;

5. Подсчитать и выдать в порядке убывания количество слов, начинающихся с одинаковой буквы, и саму эту букву;

6. Переставить слова по убыванию их длин;

7. Переставить слова по убыванию доли гласных букв в словах;

8. Переставить слова в алфавитном порядке;

9. Переставить слова с указанной длиной в алфавитном порядке, оставляя порядок следования остальных слов неизменным;

10. Переставить слова с неповторяющимися буквами в алфавитном порядке, оставляя порядок следования остальных слов неизменным;

11. Найти первое по порядку и последнее по порядку слова, полностью состоящие из символов-цифр и поменять их местами;

12. Найти все рядом стоящие пары слов, состоящие полностью из цифр, и переставить их;

13. Поменять местами два центральных слова предложения, считая, что количество слов в предложении четно;

14. Поменять местами слова, окаймляющие центральное слово строки, считая, что количество слов в строке нечетно;

15. Удалить центральное слово, если строка содержит нечетное количество слов, и два центральных слова, если строка содержит четное количество слов;

16. Удалив повторяющиеся слова, сформировать строку-предложение, в которой слова, входящие в исходную строку, встречаются только один раз;

Необходимая информация:

Ввод строки с клавиатуры.

/* подключение необходимой библиотеки */

                   import java.io.*;

InputStreamReader isr = new InputStreamReader(System.in);

                   BufferedReader br = new BufferedReader(isr);

try

                   {

                               String line = br.readLine();

}

                   catch (IOException e)

                   {

                               System.out.println("Ошибка чтения с клавиатуры");

                   }

  1. Класс String

Строка в языке Java – это основной носитель текстовой информации. Это не массив символов типа char, а объект соответствующего класса. Системная библиотека Java содержит классы String,StringBuilder и StringBuffer, поддерживающие работу со строками и определенные в пакете java.lang, подключаемом автоматически. Эти классы объявлены как final, что означает невозможность создания собственных порожденных классов со свойствами строки. Кроме того, для форматирования и обработки строк применяются классы Formatter, Pattern, Matcher и другие.

Каждая строка, создаваемая с помощью оператора new или с помощью литерала (заключённая в двойные апострофы), является объектом класса String. Особенностью объекта класса String является то, что его значение не может быть изменено после создания объекта при помощи какого-либо метода класса, так как любое изменение строки приводит к созданию нового объекта. При этом ссылку на объект класса String можно изменить так, чтобы она указывала на другой объект и тем самым на другое значение.

Конструкторы:

String(), String(String str), String(byte[] asciichar), String(char[] c), String(StringBuffer sbuf)и др.

Методы:

concat(String s)или “+” – слияние строк (создает новую строку);

"Hello".concat(" World") -> "Hello World"

equals(Object ob) – сравнение строк с учетом регистра;

equalsIgnoreCase(String s) – сравнение строк без учета регистра;

compareTo(String s)и compareToIgnoreCase (String s)– лексикографическое сравнение строк с учетом и без учета регистра;

contentEquals(StringBuffer ob)– сравнение строки и содержимого объекта StringBuffer;

substring(int n, int m)– извлечение из строки подстроки длины m-n, начиная с позиции n;

"Hello World".substring(3,8) -> "lo Wo"

substring(int n)– извлечение из строки подстроки, начиная с позиции n;

        "Hello World".substring(6) -> "World"

length()– определение длины строки;

valueOf(значение)– преобразование переменной базового типа к строке;

toUpperCase()/toLowerCase()– преобразование символов строки в верхний/нижний регистр;

replace(char с1, char с2)– замена в строке всех вхождений первого символа вторым симв-м;

"Hello".replace('l' , 'w') -> "Hewwo"

trim()– удаление всех пробелов в начале и конце строки;

charAt(int position)– возвращение символа из указанной позиции (нумерация с нуля);

indexOf – возвращает индекс символа, который необходимо найти, если символа нет, то -1;

lastIndexOf - возвращает последний индекс искомого символа, если символа нет, то -1;

getBytes(параметры), getChars(параметры)– извлечение символов строки в виде массива байт или символов;

Внимание!!! Во всех случаях вызова методов, изменяющих строку, создается новый объект типа String.

Внимание!!! Сохранить изменения в объекте класса Stringможно только с применением оператора присваивания, т.е. установкой ссылки на новый объект.

Класс StringBuffer

Класс StringBufferявляется “близнецом” класса String, но, в отличие от последнего, содержимое и размеры объектов класса StringBufferможно изменять. Объекты классов StringBufferи Stringможно преобразовывать друг в друга. Конструктор класса StringBufferможет принимать в качестве параметра объект Stringи целочисленный (неотрицательный) размер буфера. Объекты этого класса можно преобразовать в объект класса Stringметодом toString()или с помощью конструктора класса String.

Методы класса:

setLength(int n)– установка размера содержимого буфера.

capacity()– определение размера буфера объекта;

append(параметры)– добавление символов, значений базовых типов, массивов и строк;

insert(параметры)– вставка символа, объекта или строки в указанную позицию;

setCharAt(int index, char ch)– изменение значения символа на указанный;

deleteCharAt(int index)– удаление символа;

delete(int start, int end)– удаление подстроки;

reverse()– обращение содержимого объекта.

В классе присутствуют также методы, аналогичные методам класса String, такие как replace(), substring(), charAt(), length(), getChars(), indexOf()и др.

Класс StringTokenizer(класс java.util)

Первый конструктор StringTokenizer (String str) создает объект, готовый разбить строку str на слова, разделенные пробелами, символами табуляций '\t', перевода строки '\n' и возврата каретки '\r' . Разделители не включаются в число слов.

Второй конструктор StringTokenizer (String str, String delimeters) задает разделители вторым параметром delimeters , например:

StringTokenizer("Казнить,нельзя:пробелов-нет", " \t\n\r,:-");

Здесь первый разделитель – пробел. Потом идут символ табуляции, символ перевода строки, символ возврата каретки, запятая, двоеточие, дефис. Порядок расположения разделителей в строке delimeters не имеет значения. Разделители не включаются в число слов.

В разборе строки на слова активно участвуют два метода:

метод nextToken()– возвращает в виде строки следующее слово;

логический метод hasMoreTokens()– возвращает true , если в строке еще есть слова, и false , если слов больше нет.

Третий метод countTokens()– возвращает число оставшихся слов.

Четвертый метод nextToken(String newDelimeters) – позволяет "на ходу" менять разделители. Следующее слово будет выделено по новым разделителям newDelimeters; новые разделители действуют далее вместо старых разделителей, определенных в конструкторе или предыдущем методе nextToken() .

String s = "Строка, которую мы хотим разобрать на слова"; 

StringTokenizer st = new StringTokenizer(s, " \t\n\r,."); 

while(st.hasMoreTokens())

{

System.out.println(st.nextToken()) ; // вывод слова

}










Последнее изменение этой страницы: 2018-06-01; просмотров: 147.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...