Методы для работы со строками класса String
В классе String собрано много методов для работы со строками. Вот некоторые из них:
1. определение длины строки:
String str=”Это текстовая строка”;
int n=str.length(); // n=20
2. определение пустой строки:
String str=””;
boolean value=str.isEmpty(); // value=true – строка пустая
3. определение символа в строке по его индексу:
String str=”Это текстовая строка”;
char ch=str.charAt(5); // ch=’е’ – нумерация начинается с нуля!
4. преобразование строки в массив символов (ASCII-кодировка):
String str=”Это строка”;
char chArray[]=str.toCharArray();
создан массив символов chArray[] с содержанием {‘Э’,‘т’,‘о’,‘ ’,‘с’,‘т’, ‘р’,‘о’,‘к’,‘а’};
5. преобразование строки в массив байтов по ASCII-кодировке:
String str=”ABCDE”;
byte byteArray[]=str.getBytes();
создан массив байтов byteArray[] с содержанием {65, 66, 67, 68, 69};
6. сравнение двух строк с учетом регистра:
String str_1=”Даша”;
String str_2=”даша”;
boolean result=str_1.equals(str_2); // result=true, т.к. Даша>даша
строки сравниваются посимвольно (по ASCII-кодам) слева направо до первого несовпадения,
7. сравнение двух строк без учета регистра:
String str_1=”Вася Пупкин”;
String str_2=”ВАСЯ ПУПКИН”;
boolean result=str_1.equalsIgnoreCase(str_2); // result=true
Внимание! Для сравнения строк нельзя использовать операции == и != .
8. поиск символов и подстрок в строке с начала строки:
String str=”Наша Маша шагает в шапке”;
char chr=’а’;
int result=str.indexOf(chr); // result=1 (нумерация символов
// начинается снуля)
String str_1=”ша”;
result=str.indexOf(str_1); // result=2 – первое “ша”
// начинается со второго символа
если подстрока не найдена, то результат поиска равен -1,
9. поиск символов и подстрок в строке с конца строки:
String str=”Наша Маша шагает в шапке”;
char chr=’а’;
int result=str.lastIndexOf(chr); // result=20 (нумерация символов
// начинается снуля)
String str_1=”ша”;
result=str.lastIndexOf(str_1); // result=19
если в исходной строке имеются ESC-последовательности (\n) , то каждая из них считается одним символом;
10. выделение подстроки из исходной строки:
String str=”Мы программируем на Java”;
String s=str.subString(3, 16); // s=программируем
задается индекс начального символа (3) и индекс символа, который уже не будет входить в подстроку (16),
11. замена одного символа в строке другим:
String str=”Мы программируем на Java”;
String s=str.replace(‘ ‘, ‘_’); // заменяем все пробелы
//на символыподчеркивания
12. замена одной подстроки на другую:
String str=”Наша Маша шагает в шапке”;
String s=str.replaceAll(“ша”, “ся”); // заменяем все вхождения
//“ша” на “ся”
если заменяемая подстрока не найдена, то возвращается ссылка на исходную строку; регистр букв при замене учитывается,
String str=”Наша Маша шагает в шапке”;
String s=str.replaceFirst(“ша”, “ся”); // заменяем первое вхождение
//“ша” на “ся”
13. удаление начальных и конечных пробелов в строке:
String str=” Мы программируем на Java ”;
String s=str.trim(); // строка s без начальных
//и конечных пробелов
14. перевод всех букв в строке в нижний регистр (строчные буквы):
String str=”Маша и Даша”;
String s=str.toLowerCase(); // s=”маша и даша”
15. перевод всех букв в строке в верхний регистр (прописные буквы):
String str=”Маша и Даша”;
String s=str.toUpperCase(); // s=”МАША И ДАША”
16. разбиение строки на подстроки (создание массива подстрок):
String str=”Маша и Даша”;
String massiv[]s=str.split(“ “);
создается массив строк, элементы которого – это подстроки (слова), разделенные символами, указанными в качестве аргумента метода (в данном случае – пробелом):
massiv[0]=”Маша”;
massiv[1]=”и”;
massiv[2]=”Даша”;
при этом сами разделители в подстроки не входят,
17. поиск совпадения начала двух строк:
String str=”Берегите природу – мать вашу”;
String val=”Берег”;
boolean result=str.startsWith(val); // result=true
в этом случае строка str начинается с символов строки val,
18. поиск совпадения окончаний двух строк:
String str=”Берегите природу – мать вашу”;
String val=”шу”;
boolean result=str.endsWith(val); // result=true
в этом случае строка str заканчивается символами строки val.
Допускается сложение строк с числовыми величинами:
String str = 1 + 2 + 3; // str=”6”
Сначала выполняется арифметическое сложение, а затем результат преобразуется в строку.
При программировании этой операции нужно быть очень внимательным:
String str=”Сумма=” + 1 + 2 + 3; // str= “сумма=123”
В этом случае сначала производится сложение двух строк “Сумма=” +1 , причем второй операнд автоматически преобразуется в строку. Таким же образом в строку добавляются третий и четвертый операнды.
String str=1 + 2 + “ не равно ” 1 + 2; // str=”3 не равно 12”
Класс StringBuffer
Строки класса StringBuffer удобны в тех случаях, когда требуется производить изменения в одной и той же строке – убирать или вставлять символы, менять их местами, заменять одни на другие. Изменения значений переменных этого класса не приводит к созданию мусора, и обычно происходит значительно быстрее, чем при работе с переменными типа String: быстродействие приложения повышается в десятки раз, потребление памяти уменьшается в сотни и тысячи раз.
Помимо поля длины строки, у строк этого класса имеется еще поле capacity (емкость) – размер буфера под символы строки. Только что созданная строка имеет буфер, достаточный для хранения 16 символов. Как только буфер начинает переполняться, его емкость автоматически увеличивается, чтобы вместить новые символы.
Создать строку текста класса StringBuffer можно с помощью следующих конструкторов:
1. создание пустой строки:
StringBuffer text=new StringBuffer();
создана пустая строка text и автоматически зарезервирована память еще на 16 символов;
2. создание пустой строкис заданным размером буфера:
StringBuffer text=new StringBuffer(60);
создана пустая строка text и для нее зарезервирована память на 60+16 символов;
3. создание копии строки на основе существующей строки этого же класса:
StringBuffer text=new StringBuffer(StringBuffer str);
создан новый объект-строка text - копия строки str.