Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Библиотека примеров приложений Java

Оглавление
Базовые типы

Замещающие типы
Без указателей
Массивы
Структурное программи-
рование

Обработка исключений
Возбуждение исключений
Классы обработки исключений
Блок finally
Строки String
Класс Math
Класс Vector
Класс Stack
Словарь на базе Hashtable
Словарь на базе Properties
Цифровые часы
Собственный класс
Наследование классов

Интерфейсы

Назад Вперед

1.10. Работа со строками класса String

В примере демонстрируются основные приемы работы с объектами класса String. Такие объекты применяются для представления текстовых строк.

Исходный текст примера

Архив проекта для Java WorkShop 2.0

Немного теории

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

С помощью этих методов можно сливать строки и выделять подстроки, преобразовывать символы строки в строчные или прописные, выполнять поиск последовательностей символов в начале, конце или в произвольном месте строки и так далее. Есть также средства для сравнения строк.

Описание примера

В примере мы выполняем несколько операций над строками. Результат этих операций отображается на консоли.

Прежде всего программа создает строку szStr на базе массива символов chArray:

char[] chArray = {'*', 'A', 'B', 'C', '*'};
String szStr = String.copyValueOf(chArray);
System.out.println("szStr = " + szStr); 

Для выполнения такого преобразования мы применили метод copyValueOf. Этот статический метод возвращает ссылку на строку, созданную из массива символов Unicode.

Дальнейшая работа программы происходит в цикле.

В начале цикла программа вводит строку символов с консоли (то есть с клавиатуры):

byte bKbd[] = new byte[256];
int iCnt = 0;
try
{
  iCnt = System.in.read(bKbd);
}
catch(Exception ex)
{
  System.out.println(ex.toString()); 
}

Эта процедура имеет некоторые особенности.

Для ввода строки мы вызываем статический метод System.in.read. Он возвращает количество введенных символов, которое мы сохраняем в переменной iCnt. Введенные символы попадают в массив байт bKbd.

Так как этот массив содержит байты, а не символы Unicode, для преобразования массива в строку мы не можем воспользоваться только что упомянутым методом copyValueOf. Вместо этого мы применили следующую форму конструктора:

szStr = new String(bKbd, 0, iCnt);

Через первый параметр конструктору передается ссылка на преобразуемый массив байт. Второй параметр задает старший байт 16-разрядного значения Unicode, который будет подставлен во все символы создаваемой строки. И, наконец, последний параметр конструктора задает количество элементов массива, составляющих строку. Здесь мы указали значение, сохраненное в переменной iCnt методом System.in.read.

Далее с помощью класса StringTokenizer мы удаляем из полученной строки символы возврата каретки и перевода строки:

StringTokenizer st;
st = new StringTokenizer(szStr, "\r\n");
szStr = new String((String)st.nextElement());

На следующем этапе программы проверяет строку szStr, используя для этого различные методы класса String.

Прежде всего, программа сравнивает строку szStr и строку "end":

if(szStr.compareTo("end") == 0)
{
  System.out.println("\nEnd"); 
  break;
}

Если пользователь ввел строку "end", работа цикла завершается.

Далее мы проверяем, не заканчивается ли строка тремя символами '*' и не начинается ли она с трех символов '-':

else if(szStr.endsWith("***"))  
{
  System.out.println("Stars ***"); 
}
    
else if(szStr.startsWith("---"))  
{
  System.out.println("Minus ---"); 
}

Для проверки конца и начала строки szStr мы использовали, соответственно, методы endsWith и startsWith.

Поиск подстроки внутри строки удобно выполнять с помощью метода indexOf:

else if(szStr.indexOf("+++") != -1)
{
  System.out.println("Plus +++"); 
}

Условие будет выполнено, если в любом месте строки есть три идущих подряд символа '+'.

Для слияния строк можно применять оператор +. В виде исключения этот оператор перегружен для класса String. Аналогичного результата, однако, можно добиться и с помощью метода concat:

szStr = "<<<" + szStr.concat(">>>");
System.out.println("szStr = " + szStr); 

В последних строках цикла мы вызываем метод toLowerCase:

szStr = szStr.toLowerCase();
System.out.println(
  "Lower case szStr = " + szStr); 

Он выполняет преобразование символов строки в строчные.

Назад Вперед

[Назад]