- •РАБОТА СО СТРОКОВЫМИ ДАННЫМИ
- •Обработка строк
- •Обработка строк
- •String-конструкторы
- •String-конструкторы
- •String-конструкторы
- •Длина строки
- •Специальные строковые операции
- •Строковые литералы
- •Конкатенация строк
- •Конкатенация других типов данных
- •Преобразование строк и метод toString()
- •Преобразование строк и метод toString()
- •Извлечение символов
- •Метод charAt()
- •Метод getChars()
- •Метод getBytes()
- •Метод toCharArray()
- •Сравнение строк
- •Методы equals() и equalsIgnoreCase()
- •Методы equals() и equalsIgnoreCase()
- •Метод regionMatches()
- •Методы startsWith() и endsWith()
- •Методы startsWith() и endsWith()
- •Метод compareTo()
- •Метод compareTo()
- •Поиск строк
- •Поиск строк
- •Изменение строки
- •Метод substring()
- •Метод substring()
- •Метод concat()
- •Метод replace()
- •Метод trim()
- •Метод trim()
- •Преобразование данных, использующее метод valueOf()
- •Изменение регистра символов в строке
- •Класс StringBuffer
- •Конструкторы StringBuffer
- •Методы length() и capacity()
- •Метод ensureCapacity()
- •Метод setLength()
- •Методы charAt() и setCharAt()
- •Метод getChars()
- •Метод append()
- •Метод insert()
- •Метод reverse()
- •Методы delete() и deleteCharAt()
- •Метод replace()
- •Метод substring()
- •Спасибо за внимание!
Конкатенация других типов данных
Операцию конкатенации строк можно использовать с другими типами данных. Например, рассмотрим следующую, немного измененную, версию предыдущего примера:
int age= 9;
String s = "Ему " + age + " лет."; System.out.printIn(s);
В этом случае переменная age — имеет int-тип, а не string, как в предыдущем фрагменте, но вывод — такой же, как прежде. Это потому, что int-значение переменной age автоматически преобразуется в ее строчное представление внутри string-объекта и затем сцепляется аналогичным способом.
Однако будьте внимательны, когда смешиваете другие типы операций в выражениях конкатенации строк. Вы можете получить неожиданные результаты. Рассмотрим следующий фрагмент:
String s = "четыре: " + 2 + 2; System.out.printIn(s);
Этот фрагмент выводит на экран: четыре: 22
а не четыре: 4. С учетом старшинства операций сначала выполняется конкатенация первого операнда ("четыре:") со строчным эквивалентом второго ("2"). Этот результат
затем сцепляется со строчным эквивалентом третьего операнда (тоже "2"). Чтобы выполнить сначала целочисленное сложение, нужно использовать круглые скобки:
String s = "четыре: " + (2+2); Теперь s содержит строку "четыре: 4".
Преобразование строк и метод toString()
Каждый класс реализует toString(), поскольку данный метод определен в классе Object.
Однако реализации toString(), заданной по умолчанию, редко достаточно. Метод toString () имеет следующую общую форму:
String toString()
Реализация toString() просто возвращает объект типа string, который содержит удобочитаемую строку, описывающую объект вашего класса.
Переопределяя toString() для создаваемых вами классов, вы получаете строчные представления объектов, полностью интегрированные в среду программирования Java.
Например, они могут использоваться в операторах print() и printin() в выражениях конкатенации.
Преобразование строк и метод toString()
// Переопределение toString() для Вох-классов. class Box {
double width; double height; double depth;
Box(double w, double h, double d) { width = w;
height = h; depth = d; }
public String toString ()
{
return "Размеры Box-объекта: " + width + " x " + depth + " x " + height + "."; } }
class toStringDemo {
public static void main(String args[]) ( Box b = new Box(10, 12, 14);
String s = "Box b: " + b;
//конкатенация Box-объекта System.out.println(b);
//преобразование Box-объекта в строку //System.out.println(s);
}
}
Вывод этой программы: Размеры Box-объекта: 10 х 14 х 12.
Box b: Размеры Box-объекта: 10 х 14 х 12.
Обратите внимание, что метод toString() вызывается автоматически, когда Box-объект используется в выражении конкатенации или в обращении к println ().
Извлечение символов
Класс String предоставляет несколько способов извлечения символов из объекта типа String.
Хотя символы, которые составляют строку String-объекта, не могут быть индексированы, как в символьном массиве, многие из String- методов используют индекс (порядковый номер или позицию) символа в строке для выполнения своих операций.
Подобно массивам, индекс строки начинается с нуля.
Метод charAt()
Для извлечения одиночного символа из String- объекта вы можете прямо сослаться на индивидуальный символ через метод charAt().
char charAt(int where)
где параметр where — индекс (номер) символа, который вы хотите получить. Значение where должно определять позицию искомого символа в строке и не может быть отрицательным. charAt() возвращает символ, находящийся в указанной позиции строки. Например, фрагмент:
char ch;
ch = "abc".charAt(1);
назначает символьное значение «b" переменной ch.
Метод getChars()
Если нужно извлечь больше одного символа, то можно использовать метод getChars (). void getChars(int sourceStart, int sourceEnd, char target[ ], int targetStart)
Здесь sourceStart указывает индекс начала подстроки;
sourceEnd указывает индекс, который на 1 больше индекса конца желательной подстроки.
Таким образом, подстрока содержит символы в позициях от SourceStart до sourceEnd-1.
Массив, который будет принимать символы, указывается параметром target[].
Позиция в target, начиная с которой будет скопирована подстрока, передается через параметр targetstart.
class getCharsDemo {
public static void main(String args[]) {
String s = "This is a demo of the getChars method."; int start = 10;
int end = 14;
char buf[] = new char[end - start];
s.getChars(start, end, buf, 0); System.out.println(buf); } }Вывод этой программы:
demo
Метод getBytes()
Имеется альтернатива getChars (), которая сохраняет символы в массиве байтов.
Этот метод называется getBytes (). Он выполняет преобразование символов в байты заданное по умолчанию на используемой платформе.
Byte[ ] getBytes()
Имеются и другие формы getBytes().
getBytes() наиболее полезен, когда вы экспортируете string-значение в среду, которая не поддерживает 16-разрядные символы Unicode.
Например, большинство протоколов Internet и форматов текстовых файлов использует 8- разрядную кодировку ASCII для всего текстового обмена.
Метод toCharArray()
Если вы хотите преобразовать все символы в объекте типа String в символьный массив, самый простой способ состоит в вызове метода toCharArray ().
Он возвращает массив символов всей строки и имеет следующую общую форму:
char[ ] toCharArray()
Эта функция обеспечивает определенные удобства, так как достичь того же результата можно и с помощью метода getChars ().
Сравнение строк
Класс String включает несколько методов, которые сравнивают строки или подстроки внутри строк.
Методы equals() и equalsIgnoreCase()
Чтобы сравнивать две строки на равенство, нужно использовать метод equals (). Он имеет следующую общую форму:
boolean equals(Object str)
где str — string-объект, который сравнивается с вызывающим string- объектом. Метод возвращает значение true, если строки содержат одни и те же символы в одинаковом порядке, иначе возвращается false. Сравнение чувствительно к регистру.
Чтобы выполнить сравнение, которое игнорирует различия в регистре, вызывается метод equalsIgnoreCase(). При сравнении двух строк он предполагает, что символы A—Z и a—z не различаются. Общий формат этого метода:
boolean equalsIgnoreCase(String str)
где str — string-объект, который сравнивается с вызывающим string- объектом. Он тоже возвращает true, если строки содержат одни и те же символы в одном и том же порядке, иначе возвращает false.