indexOf() を使って部分文字列の位置を調べる
前のステップでは、contains()
を使って文字列が部分文字列を含むかどうかをチェックする方法を学びました。今度は、もう 1 つの便利なメソッド indexOf()
を調べてみましょう。このメソッドは、部分文字列が存在するかどうかだけでなく、文字列内でのその開始位置も教えてくれます。
Java の String
クラスの indexOf()
メソッドは、指定された部分文字列が最初に出現する文字列内のインデックスを返します。インデックスは部分文字列の最初の文字の位置です。プログラミングでは、インデックスは通常 0 から始まることを覚えておいてください。部分文字列が見つからない場合、indexOf()
は -1 を返します。
前の Java ファイル StringContains.java
を修正して、indexOf()
メソッドを使ってみましょう。
-
WebIDE のエディターで StringContains.java
ファイルを開きます。
-
ファイルの内容全体を次のコードに置き換えます。
public class StringContains {
public static void main(String[] args) {
String sentence = "Java programming is fun and powerful.";
String keyword = "programming";
// Find the index of the keyword
int index = sentence.indexOf(keyword);
System.out.println("Sentence: \"" + sentence + "\"");
System.out.println("Keyword: \"" + keyword + "\"");
if (index != -1) {
System.out.println("The keyword \"" + keyword + "\" was found at index: " + index);
} else {
System.out.println("The keyword \"" + keyword + "\" was not found.");
}
String anotherKeyword = "Python";
int anotherIndex = sentence.indexOf(anotherKeyword);
System.out.println("\nAnother keyword: \"" + anotherKeyword + "\"");
if (anotherIndex != -1) {
System.out.println("The keyword \"" + anotherKeyword + "\" was found at index: " + anotherIndex);
} else {
System.out.println("The keyword \"" + anotherKeyword + "\" was not found.");
}
}
}
この更新されたコードでは、以下のことを行っています。
sentence.indexOf(keyword)
を使って、sentence
内の keyword
の開始インデックスを見つけます。結果は int
型の変数 index
に格納されます。
if
文を使って、返された index
が -1 かどうかをチェックします。-1 でない場合は、キーワードが見つかったことを意味し、そのインデックスを出力します。そうでない場合は、キーワードが見つからなかったことを示すメッセージを出力します。
- "Python" に対しても同じ処理を繰り返し、部分文字列が存在しない場合を示します。
-
ファイルを保存します(Ctrl+S または Cmd+S)。
-
WebIDE の下部にあるターミナルを開きます。
-
~/project
ディレクトリにいることを確認します。
-
修正した Java プログラムをコンパイルします。
javac StringContains.java
-
コンパイルした Java プログラムを実行します。
java StringContains
次のような出力が表示されるはずです。
Sentence: "Java programming is fun and powerful."
Keyword: "programming"
The keyword "programming" was found at index: 5
Another keyword: "Python"
The keyword "Python" was not found.
この出力は、"programming" が文章内のインデックス 5 から始まることを示しています('J' がインデックス 0、'a' がインデックス 1 というように、スペースも含めて数えることを覚えておいてください)。また、"Python" が見つからなかったことも正しく示されています。
indexOf()
を使うことで、部分文字列の存在をチェックするだけでなく、その正確な位置を特定することができます。これは、さまざまな文字列操作タスクに役立ちます。