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チャレンジ
簡単3つの引数を受け取るmodifyTextという名前のメソッドを作成します。
- 変更するString(
text) - 検索するString(
target) - targetを置き換えるString(
replacement)
このメソッドは次の処理を行います。
- 入力テキストを使って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));
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Javaオンラインコンパイラ