Java

Класс String и его методы

Задание такое
Дано строка String str1=("daxzaaaxezwdxx");
Надо найти количество символов находятся внутри символов z
Надо делать так, чтобы вывел aaaxe
Не знаю каким методом делать
String str1 = "daxzaaaxezwdxx";

Это чтобы получить строку aaaxe:
str1.substring(str1.indexOf('z') + 1,str1.lastIndexOf('z'))

Это чтобы получить количество символов между символами z:
str1.substring(str1.indexOf('z') + 1,str1.lastIndexOf('z')).length()

.

Для этого потребовались 3 метода.

.

Пояснения:
I Метод:
substring - метод класса String. Нужен, чтобы создать подстроку. Принимает 2 числа - индексы начала и конца подстроки или 1 число, только начало подстроки. Во 2 случае концом подстроки становится конец строки.
Нумерация символов начинается с нуля. Первый символ подстрока включает, последний не включает.

Примеры:

new String("Фантастика!").substring(0,9);
Вернёт "Фантастик";

new String("Jack, Hello...").substring(6,12);
Вернёт "Hello.".

"Я думал, ты в Москве!".substring(7);
Вернёт ", ты в Москве!".

II метод:
indexOf(char) возвращает индекс первого вхождения искомого символа в строку, принимает искомый символ. Если символа не содержится в строке, вернёт -1.

Примеры:
"фффвакт".indexOf(ф);
Вернёт 0.

"Вау! Ты где это взял?".indexOf('т');
Вернёт 13. (потому что регистр учитывается)

"Sasha".indexOf('ш');
Вернёт -1.

III метод:
lastIndexOf() - всё то же самое, что и indexOf(), только возвращает индекс не первого, а последнего вхождения символа в строку.

Пример:

"ssskkksssd".lastIndexOf('s');
Вернёт 8.

"ssskkksssd".indexOf('s');
Вернёт 0.

Вот такой можно метод сделать:

public static void substringBetweenChars(String s, char c) {
s = s.substring(s.indexOf(c) + 1,s.lastIndexOf(c));
System.out.println(s + " - " + s.length() + " символов");
}

При вызове его с вашими параметрами:
substringBetweenChars("daxzaaaxezwdxx",'z');
В консоли будет выведено сообщение:
aaaxe - 5 символов

Для вашего частного случая метод будет выглядеть так:

String str1 = "daxzaaaxezwdxx";
str1 = str1.substring(str1.indexOf('z') + 1,str1.lastIndexOf('z'));
System.out.println(str1 + " " + str1.length() + " символов");

Давайте разберём код этого метода по строкам:

1. public static void substringBetweenChars(String s, char c) {
public - метод виден из любого места программы.
static - метод принадлежит классу... Это очень важный модификатор, но нет смысла о нём здесь писать. Если не знаете или не поняли, для чего он нужен и что означает, то займитесь этим.
void - этот метод не возвращает никакого значения. Он мог бы возвращать строку между символами или количество символов этой строки.
Т. е. в вашем случае aaaxe или 5, , но я посчитал достаточным просто вывести сообщение.
substringBetweenChars - название, имя метода.
(String s, char c) - параметры. И так уже всё понятно, верно?

2. s = s.substring(s.indexOf(c) + 1,s.lastIndexOf(c));
Приравниваем s к этой интересующей нас части.

Вот так мы её получаем:
s.substring(s.indexOf(c) + 1,s.lastIndexOf(c));

Индекс начала строки s.indexOf(c) + 1 - это первое вхождение символа c + 1.
+ 1, потому что нам не надо учитывать сам символ char c. Если бы мы не прибавали 1, то в вашем случае получилась бы zaaaxe.
Второй индекс - это индекс последнего вхождения символа char c. Соответственно он и так не включается в подстроку.
В вашем случае после этой строки s = "aaaxe";

3. System.out.println(s + " - " + s.length() + " символов") - здесь просто выводим сообщение. Получившуюся строку и количество символов в ней. И так понятно, что количество это мы получаем методом String.length().

.

.

Если хочется, то можно записать весь метод одной строкой. Но это неэффективно, ибо действия будут проведены 2 раза.
Всё же вот эта строка:

System.out.println(s.substring(s.indexOf(c) + 1,s.lastIndexOf(c)) + " " + s.substring(s.indexOf(c) + 1,s.lastIndexOf(c)).length() + " символов");
ЖГ
Жека Грабельников
3 550
Лучший ответ
Герман Арутюнов Спс вам,
а я вас вспомнил
один раз когда вы ответили я не выбрал ваш ответ лучший, и у нас было немного недоразумение, но сейчас ваш ответ я выбрал лучшим, потому что это просто божественный ответ))))
т. е. ты думаешь что в классе String есть готовый метод для решения этой задачи в один ход?
так что надо то? Количество символов или подстрока с символами.
Строка это массив символов.
Организуем цикл от 0 до длины строки
находим первое вхождение символа z сравнивая текущий символ с зэт
запоминаем позицию в переменную А
продолжаем перебор
находим второе вхождение
запоминаем в переменную В
извлекаем подстроку от позиции А до позиции В - есть стандартная функция
если нужна длина спрашиваем длину у извлеченной подстроки
int i = xddlol.lastIndexOf(lolchar) - xddlol.indexOf(lolchar);
Существует уже готовый метод indexof() - который возвращает номер позиции заданного символа.
Вот нам нужно найти позицию первого вхождения 'z';
int a = str1.indexOf('z');
Далее используем метод lastIndexOf() - который возвращает номер последнего вхождения элемента 'z';
int b = str1.lastIndexOf('z');

Теперь загуглите " как обрезать строку в Джава ". Решение последнего займет 1 строку кода.
Есть отличный метод - split();
он делит строчу на массив строк по строке разделителю.
String[] foo = str1.split("z");
теперь в массиве foo в ячейке с индексом 1 будет ваша строка (foo[1])
узнать её длину можно так: foo[1].length();