indexOfメソッド - StringBuilderクラス - 萌えJava超入門
StringBuilderクラス

indexOfメソッド

引数の文字列が最初に見つかった位置を返します。

indexOf

萌えJava超入門
これも Stringクラスの
indexOfメソッドと
同じだな。
目次

1. indexOfメソッド


引数が String一つだけの場合
自身の文字列の先頭から検索して
指定された文字列 String str が最初に出現する位置のインデックスを返します。

 public int indexOf(String str)

indexOfメソッド 書式
StringBuilder sb;
String str;
   int inte = sb.indexOf(str);

その他
引数に指定した文字列が含まれていない場合は「-1」を返します。



引数が (String, int) の場合
自身の文字列を、指定されたインデックス(int fromIndex)から検索して、
指定された文字列(String str)が最初に出現する位置のインデックスを返します。
2つ目以降の出現箇所を探す場合に利用できます。
サンプルコードをご参考にしてください。

 public int indexOf(String str, int fromIndex)

indexOfメソッド 書式
StringBuilder sb;
String str;
int fromIndex;
   int inte = sb.indexOf(str, fromIndex);

その他
  指定されたインデックスよりも後ろに
  引数に指定した文字列が含まれていない場合は「-1」を返します。



2.サンプルコード

以下のサンプルは、StringBuilder sb に含まれる "レンジャー" という文字列を探します。
見つけた場合には、そのインデックスと、ヒットした "レンジャー" + 1文字 を表示します。

以下のサンプルで、int fromIndex は、
  1. indexOf検索開始位置
  2. substring切り出し開始位置
の2つの役割を担っています。

萌えJava超入門
ちょっと難しいかもしれないけど
がんばって!
//Sample07_01.java

/*sb の末尾が"レンジャー" の場合
StringIndexOutOfBoundsException を吐きます
ごめんね。*/

class Sample07_01{
    public static void main(String[] args){

      StringBuilder sb = new StringBuilder();
      sb.append("キレンジャー黄瀬涼太\n");
      sb.append("ミドレンジャー緑間真太郎\n");
      sb.append("アオレンジャー青峰大輝\n");
      sb.append("ムラサキレンジャー紫原敦\n");
      sb.append("アカレンジャー赤司征十郎\n");
      System.out.println(sb.toString());
      int sbLength = sb.length();
      System.out.println("sbLength: " + sbLength);

      String searchWord = "レンジャー";
      int length = searchWord.length();
      int fromIndex = 0;

      while((fromIndex = sb.indexOf(searchWord, fromIndex)) != -1){
          System.out.print("index: " + fromIndex);
          String hitWord = sb.substring(fromIndex, fromIndex + length +1);
          System.out.println("\t hitWord: " + hitWord);
          fromIndex++;  //重複ヒットを避けるため、一文字進む
          if(fromIndex>= sbLength - length)break;
      }
    }
}

ヒント
while文の条件式は、代入と評価を一文で行っています。

 while(
  (fromIndex = sb.indexOf(searchWord, fromIndex))
  != -1
 )
  1. 代入 fromIndex = sb.indexOf(searchWord, fromIndex)
  2. 評価 fromIndex != -1

コマンドライン
>cd ws
ws>javac -encoding UTF-8 Sample07_01.java
ws>java Sample07_01
キンジャー黄瀬涼太(\n)
ミドンジャー緑間真太郎(\n)
アオンジャー青峰大輝(\n)
ムラサキンジャー紫原敦(\n)
アカンジャー赤司征十郎(\n)

sbLength: 62
index: 1         hitWord: レンジャー黄
index: 13        hitWord: レンジャー緑
index: 26        hitWord: レンジャー青
index: 40        hitWord: レンジャー紫
index: 51        hitWord: レンジャー赤


萌えJava超入門
indexは、0はじまりなので、
最初の「レンジャー」のの字は
index == 1 だ。
萌えJava超入門
ミドレンジャーの
13番目っスね!
萌えJava超入門




お疲れ様でした。




© 2019 awasekagami