Назад
Вперед
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);
Он выполняет преобразование символов строки в
строчные.
Назад Вперед |