Управление строками, функции для работы со строками в Java.
В этом уроке мы продолжим изучение строк в Java. Основы работы со строками можно посмотреть в уроке «Строки в Java».
Класс String в Java имеет набор методов для управление содержимым строки. Находить символы, подстроки, изменять регистр и другие задачи.
Получение символов и подстрок
Вы можете получить символ, находящийся на определенной позиции в строке, вызвав метод charAt(). Индекс первого символа в строке — 0, последнего — length()-1. Следующий код возвращает 9 символ строки.
String anotherPalindrome = "Niagara. O roar again!"; char aChar = anotherPalindrome.charAt(9);
Нумерация символов начинается с 0, поэтому 9 символ в строке — «О».

Если вам необходимо получить не один символ, а часть строки, можно использовать метод substring. Метод substring имеет два варианта:
| Метод | Описание |
|---|---|
String substring(int beginIndex, int endIndex) |
Возвращает подстроку данной строки, начиная с символа с индексом beginIndex, заканчивая endIndex — 1. |
String substring(int beginIndex) |
Возвращает подстроку данной строки, начиная с символа под номером beginIndex и до конца строки. |
Следующий код вернет подстроку строки, начиная с 11 символа, но не включая 15, получится слово «roar»
String anotherPalindrome = "Niagara. O roar again!"; String roar = anotherPalindrome.substring(11, 15);

Другие методы для управления строками
В таблице приведены некоторые методы для работы со строками и их описание.
| Метод | Описание |
|---|---|
String[] split(String regex)String[] split(String regex, int limit) |
Ищет совпадения в строке согласно заданному регулярному выражению и разбивает строку на массив. Необязательный аргумент limit задает максимальный размер возвращаемого массива. |
CharSequence subSequence(int beginIndex, int endIndex) |
Возвращает последовательность символов, начиная с beginIndex, заканчивая endIndex — 1. |
String trim() |
Возвращает строку, в которой удалены лишние пробелы в начале строки и в конце. |
String toLowerCase() |
Возвращает копию строки, символы которой переведены в нижний или верхний регистр. Если преобразований не требуется возвращается оригинальная строка. |
Поиск символов и подстрок
Рассмотрим еще несколько методов для поиска символов и подстрок. Класс String содержит методы, которые возвращают позицию символа или подстроки в строке: indexOf()и lastIndexOf(). Методы indexOf()осуществляют поиск с начала строки, lastIndexOf() - с конца. Если данные методы не нашли совпадений, они возвращают -1.
Также класс String содержит метод contains, который возвращает true, если заданная последовательность символов содержится в строке. Используйте этот метод, если необходимо узнать о существовании подстроки в строке, а её позиция не важна.
В следующей таблице описываются методы indexOf()и lastIndexOf().
| Метод | Описание |
|---|---|
int indexOf(int ch) |
Возвращает индекс первого(последнего) вхождения символа в строке. |
int indexOf(int ch, int fromIndex) |
Возвращает индекс первого(последнего) вхождения символа в строке, начиная поиск с указанного индекса. |
int indexOf(String str) |
Возвращает индекс первого(последнего) вхождения подстроки в строке. |
int indexOf(String str, int fromIndex) |
Возвращает индекс первого(последнего) вхождения подстроки в строке, начиная поиск с указанного индекса. |
boolean contains(CharSequence s) |
Возвращает true, если заданная последовательность символов содержится в строке. |
CharSequence — это интерфейс, который реализует класс String, поэтому вы можете передавать строки в метод contains().
Изменение строк. Замена символов и подстрок
Класс String имеет несколько методов для вставки символов и подстрок в строку. В таблице описаны методы для замены найденных символов и подстрок.
| Метод | Описание |
|---|---|
String replace(char oldChar, char newChar) |
Возвращает новую строку, в которой все oldChar заменены на newChar. |
String replace(CharSequence target, CharSequence replacement) |
Заменяет все вхождения подстроки target на строку replacement. |
String replaceAll(String regex, String replacement) |
Заменяет все подстроки, которые описывает заданное регулярное выражение на replacement |
String replaceFirst(String regex, String replacement) |
Заменяет только первую подходящую подстроку. |
Пример
Следующий класс Filename показывает пример использования методов lastIndexOf() и substring() для использования разных частей строки с именем файла.
public class Filename {
private String fullPath;
private char pathSeparator,
extensionSeparator;
public Filename(String str, char sep, char ext) {
fullPath = str;
pathSeparator = sep;
extensionSeparator = ext;
}
public String extension() {
int dot = fullPath.lastIndexOf(extensionSeparator);
return fullPath.substring(dot + 1);
}
// получение имени файла без расширения
public String filename() {
int dot = fullPath.lastIndexOf(extensionSeparator);
int sep = fullPath.lastIndexOf(pathSeparator);
return fullPath.substring(sep + 1, dot);
}
public String path() {
int sep = fullPath.lastIndexOf(pathSeparator);
return fullPath.substring(0, sep);
}
Теперь рассмотрим программу, которая использует класс Filename:
public class FilenameDemo {
public static void main(String[] args) {
final String FPATH = "/home/user/index.html";
Filename myHomePage = new Filename(FPATH, '/', '.');
System.out.println("Extension = " + myHomePage.extension());
System.out.println("Filename = " + myHomePage.filename());
System.out.println("Path = " + myHomePage.path());
}
}
Программа выведет:
Extension = html Filename = index Path = /home/user
Метод extension использует метод lastIndexOf для определения последнего вхождения ".". Метод substring использует это значение для нахождения расширения файла.

На этом все!



Спасибо за статью.Понятные и хорошие рисунки.