Строки и работа с текстом в Java 17: подробное руководство
Строки и работа с текстом в Java
Введение: зачем нам работать с текстом?
Представь, что ты программист, который создаёт приложения. Твоя программа постоянно общается с пользователем: читает его сообщения, выводит ответы, обрабатывает названия, хештеги, тексты песен и статьи. Всё это — строки (тип String).
Строка — это последовательность символов: букв, цифр, знаков. В Java строки — это не просто набор букв, а настоящий объект, который умеет делать много полезных вещей: находить части текста, менять регистр, удалять лишние пробелы и даже переворачивать текст задом наперёд.
Основной синтаксис
Строка создаётся очень просто:
String имя = "Твой текст";
В Java 17 строки можно соединять с помощью + (конкатенация):
String приветствие = "Привет, " + "друг!";
System.out.println(приветствие); // Выведет: Привет, друг!
Но самое интересное — это методы (команды) строк. Вот самые популярные:
| Метод | Что делает | Пример |
|---|---|---|
length() | Возвращает длину строки (количество символов) | "Кот".length() → 3 |
charAt(i) | Возвращает символ на позиции i (счёт с 0) | "Кот".charAt(1) → 'о' |
substring(a, b) | Вырезает часть строки от a до b (не включая b) | "Привет".substring(0,4) → "Прив" |
toLowerCase() | Переводит все буквы в маленькие | "Java".toLowerCase() → "java" |
toUpperCase() | Переводит все буквы в большие | "java".toUpperCase() → "JAVA" |
trim() | Удаляет пробелы в начале и конце строки | " текст ".trim() → "текст" |
indexOf(строка) | Ищет подстроку и возвращает её позицию (или -1, если не нашел) | "Hello".indexOf("ll") → 2 |
replace(что, на_что) | Заменяет все вхождения одной строки на другую | "кот".replace("к", "с") → "сот" |
split(разделитель) | Разбивает строку на массив строк по разделителю | "яблоко,банан".split(",") → ["яблоко","банан"] |
Разбор типичных задач (как в твоих примерах)
Задача 1: Хештег (обрезка текста)
Условие: Дан хештег #ЛучшийДеньДляПрограммирования. Нужно взять только первые 10 символов (без решётки).
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите хештег: ");
String hashtag = scanner.nextLine();
// Убираем решётку (первый символ)
String безРешётки = hashtag.substring(1);
// Берём первые 10 символов
String часть = безРешётки.substring(0, 10);
System.out.println("Короткий хештег: #" + часть);
}
}
Задача 2: Подсчёт слов в песне
Условие: Дан текст песни. Нужно посчитать количество слов (слова разделены пробелами).
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Введите текст песни:");
String текст = scanner.nextLine();
// Разбиваем строку по пробелам на массив слов
String[] слова = текст.split(" ");
System.out.println("Количество слов: " + слова.length);
}
}
Задача 3: Обратное сообщение (переворот строки)
Условие: Напиши программу, которая переворачивает строку задом наперёд.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Введите сообщение: ");
String сообщение = scanner.nextLine();
String перевёрнутое = "";
// Идём от последнего символа к первому
for (int i = сообщение.length() - 1; i >= 0; i--) {
перевёрнутое = перевёрнутое + сообщение.charAt(i);
}
System.out.println("Перевёрнутое сообщение: " + перевёрнутое);
}
}
Частые ошибки новичков
- Путают
length()иlength: У строки методlength()со скобками. У массива — свойствоlengthбез скобок. - Забывают, что счёт символов начинается с 0:
"Кот".charAt(0)— это 'К', а не 'о'. - Ошибка при
substring: Если начальный индекс больше конечного или выходит за длину строки, программа упадёт с ошибкой. - Не учитывают пробелы в начале и конце: Всегда используйте
trim(), если пользователь мог случайно поставить лишний пробел. - Сравнивают строки через
==: Для строк пишитеequals()!"Привет".equals("Привет")— правильно, а==сравнивает ссылки, а не содержимое.
Итоговый пример: NFT-анализатор
Задача: Ты создаёшь NFT-коллекцию. Название токена должно быть не короче 5 символов, содержать только буквы и цифры, и ты хочешь вывести его в верхнем регистре.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Придумай название для NFT: ");
String название = scanner.nextLine();
// Убираем лишние пробелы
название = название.trim();
// Проверка длины
if (название.length() < 5) {
System.out.println("Ошибка: название слишком короткое (нужно минимум 5 символов)");
return;
}
// Проверка, что только буквы и цифры
boolean только_буквы_цифры = true;
for (int i = 0; i < название.length(); i++) {
char символ = название.charAt(i);
if (!Character.isLetterOrDigit(символ)) {
только_буквы_цифры = false;
break;
}
}
if (!только_буквы_цифры) {
System.out.println("Ошибка: название должно содержать только буквы и цифры");
return;
}
// Преобразуем в верхний регистр
String финальное = название.toUpperCase();
System.out.println("✅ Токен готов к продаже!");
System.out.println("Название: " + финальное);
System.out.println("Длина: " + финальное.length() + " символов");
}
}
Как это работает:
- Сначала удаляем лишние пробелы (
trim()) - Проверяем длину (
length()) - Проходим по каждому символу (
charAt()) и проверяем, буква это или цифра (Character.isLetterOrDigit()) - Переводим всё в верхний регистр (
toUpperCase())
Теперь ты знаешь основы работы со строками в Java 17. Пробуй решать задачи — текст вокруг нас, и управлять им очень интересно!