Menu
CoddyTech

Введение в 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
challenge icon

Задание

Легко

Создай метод с именем modifyText, который принимает три аргумента:

  1. Строка (text) для изменения
  2. Строка (target) для поиска
  3. Строка (replacement) для замены target

Метод должен:

  1. Создать StringBuffer с входным текстом
  2. Заменить первое вхождение target на replacement
  3. Добавить восклицательный знак в конце
  4. Вернуть итоговую строку

Сообщения, возвращаемые методом, должны быть такими:

  • Если какой-либо входной аргумент равен 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));
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Java