おしえてあげるもん!
特定の文字が入っているかどうかってどうやって調べるの?
方法はいくつかあるもん!
containsだったり、indexOfだったりあるもん!
containsでやってみよう
public boolean contains(CharSequence s)
containsはbooleanなので、特定の文字が含まれている場合にtrue、含まれていない場合にfalseを返却します。
例えば、文字列に「コツコツ」が含まれているかどうか調べたいときは以下のように書きます。
String str = "こんにちは、僕はコツコツ太郎です。"; if (str.contains("コツコツ")) { System.out.println("含まれています。"); //含まれているため、こちらが実行されます } else { System.out.println("含まれていません。"); }
indexOfでやってみよう
public int indexOf(String str)
indexOfは、検索したい文字が最初に出てくるインデックス(int)を返却します。
例えば「こんにちは、僕はコツコツ太郎です。」のどこに「コツコツ」が含まれているかどうか確認したい場合。
以下を実行するとインデックスの8番目に「コツコツ」があるため「8」を返却します。
String str = "こんにちは、僕はコツコツ太郎です。"; System.out.println(str.indexOf("コツコツ")); // 「8」と表示される。
indexOfは対象の文字列が含まれていない場合は「-1」
indexOfは対象の文字列が含まれていない場合は「-1」を返却します。
String str = "こんにちは、僕はコツコツ太郎です。"; System.out.println(str.indexOf(“花子”)); //「-1」と表示される。
もし、対象の文字列が含まれてるかどうか確認したい場合は、indexOfの返却値が「 -1」 より大きいかどうか調べれば良いのです。
String str = "こんにちは、僕はコツコツ太郎です。"; if (str.indexOf("コツコツ") > -1) { //-1より大きいかどうか System.out.println("含まれています。"); // こっちが実行される } else { System.out.println("含まれていません。"); }
後ろから検索する「lastIndexOf」
indexOfは前から文字を検索しますが、後ろから検索する「lastIndexOf」があります。
public int lastIndexOf(String str)
使い方はindexOfと同じです。
文字列の後ろ、「。」→「る」→「よ」→・・・と検索していきます。
String str = "コツコツ太郎は、コツコツ頑張るよ。"; System.out.println(str.indexOf("コツ")); //「0」が表示される System.out.println(str.lastIndexOf("コツ")); //「10」が表示される