【Ruby】【Java】特定の文字列を数える


 新しく「Java」を勉強するにあたり、これまで「Ruby」を勉強する過程で作っていたプログラムを「Java」で作ってみることにしました。

 今回作るプログラムはこちらです。

def count_hi(str)
  puts str.scan("hi").length
end

count_hi('abc hi ho')
count_hi('ABChi hi')
count_hi('hihi')

 「Ruby」で作っていた 「hi」という文字列を数えるプログラムです。出力結果は以下のようになります。

1
2
2

Javaで作ると

 「Java」で作るとこのようになりました。初めに自分で作ったコードは無駄が多かったため、下記の記事を参考にして書き直しました。

 文字列の中から特定の文字を数える

  • メソッドを定義したクラス
package example;

public class Count {

    void countHi(String str) {
        int index = 0;
        int count = 0;
        while(true) {
            index = str.indexOf("hi", index) + 1;
            if (index == 0) break;
            count++;
        }
        System.out.println(count);
    }

}
  • メソッドを呼び出すクラス
package example;

public class UseCountHi {

    public static void main(String[] args) {
        Count str1 = new Count();
        str1.countHi("abc hi ho");

        Count str2 = new Count();
        str2.countHi("ABChi hi");

        Count str3 = new Count();
        str3.countHi("hihi");
    }

}

 まだまだ書き直す余地はあると考えられますのでご意見いただけるとありがたいです。「Ruby」で用いた「scan」と同じようなメソッドは「Java」にはありますでしょうか?