Извлечение символов и подстрок
Для извлечения символов по индексу в классе String определен метод char charAt(int index). Он принимает индекс, по которому надо получить символов, и возвращает извлеченный символ:
String str = "Java";
char c = str.charAt(2);
System.out.println(c); // v
Как и в массивах индексация начинается с нуля.
Если надо извлечь сразу группу символов или подстроку, то можно использовать метод getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin). Он принимает следующие параметры:
srcBegin: индекс в строке, с которого начинается извлечение символов
srcEnd: индекс в строке, до которого идет извлечение символов
dst: массив символов, в который будут извлекаться символы
dstBegin: индекс в массиве dst, с которого надо добавлять извлеченные из строки символы
String str = "Hello world!";
int start = 6;
int end = 11;
char[] dst=new char[end - start];
str.getChars(start, end, dst, 0);
System.out.println(dst); // world
Сравнение строк
Для сравнения строк используются методы equals() (с учетом регистра) и equalsIgnoreCase() (без учета регистра). Оба метода в качестве параметра принимают строку, с которой надо сравнить:
String str1 = "Hello";
String str2 = "hello";
System.out.println(str1.equals(str2)); // false
System.out.println(str1.equalsIgnoreCase(str2)); // true
В отличие от сравнения числовых и других данных примитивных типов для строк не применяется знак равенства ==. Вместо него надо использовать метод equals().
Еще один специальный метод regionMatches() сравнивает отдельные подстроки в рамках двух строк. Он имеет следующие формы:
boolean regionMatches(int toffset, String other, int oofset, int len)
boolean regionMatches(boolean ignoreCase, int toffset, String other, int oofset, int len)
Метод принимает следующие параметры:
ignoreCase: надо ли игнорировать регистр символов при сравнении. Если значение true, регистр игнорируется
toffset: начальный индекс в вызывающей строке, с которого начнется сравнение
other: строка, с которой сравнивается вызывающая
oofset: начальный индекс в сравниваемой строке, с которого начнется сравнение
len: количество сравниваемых символов в обеих строках
Используем метод:
String str1 = "Hello world";
String str2 = "I work";
boolean result = str1.regionMatches(6, str2, 2, 3);
System.out.println(result); // true
В данном случае метод сравнивает 3 символа с 6-го индекса первой строки ("wor") и 3 символа со 2-го индекса второй строки ("wor"). Так как эти подстроки одинаковы, то возвращается true.