Введение в StringBuffer
Часть раздела Логика и управление потоком путешествия по Java на Coddy. Урок 45 из 59.
StringBuffer похож на StringBuilder, но является потокобезопасным (безопасен при одновременном выполнении нескольких операций). Он используется для создания изменяемых (модифицируемых) строк.
Создайте StringBuffer с исходным текстом:
StringBuffer sb = new StringBuffer("Hello");Добавьте больше текста с помощью append():
sb.append(" World");После выполнения приведённого выше кода sb содержит:
Hello World
Измените текст с помощью insert() и replace():
StringBuffer sb = new StringBuffer("Java");
sb.insert(0, "Hi "); // добавляет в начало
sb.replace(0, 2, "Hey"); // заменяет "Hi" на "Hey"После выполнения приведённого выше кода в sb содержится:
Hey Java
Чтобы найти, где начинается текст, используйте indexOf(). Он возвращает позицию первого совпадения или -1, если такого текста нет:
StringBuffer sb = new StringBuffer("Hey Java");
int pos = sb.indexOf("Java"); // 4
int none = sb.indexOf("Python"); // -1Задание
ЛегкоСоздай метод с именем modifyText, который принимает три аргумента:
- Строка (
text) для изменения - Строка (
target) для поиска - Строка (
replacement) для замены target
Метод должен:
- Создать StringBuffer с входным текстом
- Заменить первое вхождение target на replacement
- Добавить восклицательный знак в конце
- Вернуть итоговую строку
Сообщения, возвращаемые методом, должны быть такими:
- Если какой-либо входной аргумент равен null: вернуть "Invalid input"
- Если target не найден: вернуть исходный текст с восклицательным знаком
- При успешном выполнении: вернуть изменённый текст
Попробуйте сами
import java.util.Scanner;
public class Main {
public static String modifyText(String text, String target, String replacement) {
// Напишите здесь свой код
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String text = scanner.nextLine();
String target = scanner.nextLine();
String replacement = scanner.nextLine();
if (text.equals("null")) text = null;
if (target.equals("null")) target = null;
if (replacement.equals("null")) replacement = null;
System.out.println(modifyText(text, target, replacement));
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Многомерные массивы
Основы 2D-массивовДоступ к элементам 2D-массиваВложенные циклы с 2D-массивамиПовторение - 2D-массивыСложение и вычитание матрицРваные массивы3D-массивы и вышеРаспространённые паттерны 2D-массивовПовторение - всё о массивах2HashMap Часть 1
Что такое HashMap?Объявление HashMapДоступ к значениямПроверка существования ключаИзменение словарейИтоги - HashMap5HashSet Часть 2
Математика - Объединение HashSetsМатематика - Пересечение HashSetМатематика - Разность множествМатематика - Симметрическая разностьПодмножества и надмножестваИтерация по множествам8Продвинутые операции со строками
Основы StringBuilderВведение в StringBufferОсновы регулярных выраженийСопоставление шаблонов с RegexСтроковый токенизаторПродвинутое форматирование строк3HashMap. Часть 2
Методы HashMapИтерация с keySet()Итерация с entrySet()Вложенный HashMapПовторение - Управление складомПовторение - Операции HashMap6Продвинутое управление потоком
Операторы метокВыражение switchСопоставление шаблоновОхранные клаузыИтоги - управление потоком9Проект - Счетчик уникальных слов
Ввод и хранение текстаОбработка словПотренируйтесь самостоятельно: Онлайн-компилятор Java