Stringクラスは素晴らしい。

僕はまだまだ「灯台もと暗し」でした。
Stringクラスを理解している・・・・と思い込んでいた。
文章で書くと「文字列」ですが、
あくまで「Char」型が連結しているものだ。
(↑と思っているだけです)


あぁだこうだという前に、色々便利な機能を書いてみます。


文字列に特定の文字が含まれているか調べる。
例)文字列に「、」があるかどうか調べる。

public class Test {

	public static void main(String[] args) {
		final String MSG1 = "句読点を含みません";
		
		final String MSG2 = "、を含みます";
		
		final String FLG = "、";
		
		if (MSG1.contains(FLG)) {
			System.out.println("変数msg1に「、」を含みます");
		} else {
			System.out.println("変数msg1に「、」を含みません");
		}
		
		if (MSG2.contains(FLG)) {
			System.out.println("変数msg2に「、」を含みます");
		} else {
			System.out.println("変数msg2に「、」を含みません");
		}
	}
}

結果は

変数MSG1に「、」を含みません
変数MSG2に「、」を含みます


文字列に特定の文字列が含まれているか調べる。
例)文字列に「長淵剛」があるかどうか調べる。

public class Test {

	public static void main(String[] args) {
		final String MSG1 = "この文字列の中に長淵剛はありますか?";
		
		final String MSG2 = "この文字列の中に「ながぶちつよし」はありますか?";
		
		final String FLG = "長淵剛";
		
		if (MSG1.indexOf(FLG)> 0) {
			System.out.println("変数MSG1に「長淵剛」を含みます");
		} else {
			System.out.println("変数MSG1に「長淵剛」を含みません");
		}
		
		if (MSG2.indexOf(FLG)> 0) {
			System.out.println("変数MSG2に「長淵剛」を含みます");
		} else {
			System.out.println("変数MSG2に「長淵剛」を含みません");
		}
	}
}
変数MSG1に「長淵剛」を含みます
変数MSG2に「長淵剛」を含みません

上記「indexOf」は文字列に対象の文字列が含まれる位置を返します。
もちろん対象文字列がない場合は「-1」が返ってきます。


ってことは
「探したい文字列があったら0以上になる」
これってすごくないですか?

Stringクラスを自分で実装するには
Char型にしてそれを連結して、最低でも前後の文字列がどう並んでいるか把握しておく必要がある!!


必要要件でこんなに難しい処理を書くのは僕は無理です。
Javaを作ったSunは本当に計り知れない技量があります。
今更ながら情けないですが、自分はまだ何もできないのだと
再確認しました。