Menu
CoddyTech

StringBuffer の入門

CoddyのJavaジャーニー「ロジックとフロー」セクションの一部。レッスン 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

チャレンジ

簡単

3つの引数を受け取るmodifyTextという名前のメソッドを作成します。

  1. 変更するString(text)
  2. 検索するString(target)
  3. targetを置き換えるString(replacement)

このメソッドは次の処理を行います。

  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オンラインコンパイラ