この章では文字列に関するメソッドについて説明します。
先ほどは自身でメソッドを作成しましたが、ここで説明するメソッドはJavaであらかじめ用意されているメソッドです。
Javaのメソッドの仕組みはエクセルの関数の仕組みと意味は同じです。
エクセルをご存知の方はわかると思いますが、例えばエクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。例えば指定した範囲の引数が3,5,7であるならば結果は15です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
Javaにはこのように機能が定義されているメソッドが多数ありますので、この章では文字列に関係するメソッドを取り上げたいと思います。
例えば文字列の一部を取り出したり、文字列の長さを計るメソッドです。
次の例ではユーザーに入力させた文字が反対から読んでも同じ文字かどうかを判定するプログラムです。
プログラムの流れは以下の通りです。
〇ユーザーに文字を入力させる
〇入力した文字を反対に並び替える
〇ユーザーが入力した文字と反対に並び替えた文字が同じかどうかを比べる。
では例をみてみましょう。
〇ユーザーに文字を入力させるのですが、ユーザーに入力させるためには以下の記述が必要であることは「if文で星座を判定しよう」で説明しました(BufferedReaderクラスの説明は「キーボードの入力の値を受け取ろう」で説明します)。
〇次は入力した文字を反対に並び換えます。
入力した文字をcharAtメソッドを使用して、末尾から一文字ずつ取り出して反対文字を作成します。
charAtメソッドは指定した位置にある文字を取り出すメソッドですが、基本構文は以下の通りです。
末尾のAを取り出したい場合には
数え方は前から0,1,2…と数えます。1から数えるわけではないので気を付けてください。
この例ではfor文で回しているので、iには0から順に数字が入ります。
moji変数には1文字しか入れないのでデータ型はcharにします。
そして以下のhantai変数にmoji変数の要素をつなげています。
hantai += moji;
〇以下の箇所でユーザーが入力した文字と反対に並び替えた文字が同じかどうかを比べています。
文字列同士を比べているのでequalsを使っています。
では次の例を見てみましょう。
指定した文字で始まっているのかを調べるメソッドはstartsWithメソッドであり、指定した文字で終わっているのかを調べるにはendsWithメソッドを使います。
endsWithメソッドの場合は指定した文字で終わっていればTRUEを返し、そうでないならばFALSEを返します。
構文のstartsWithの中の
では説明を始めます。
doが3の位置から始まっているのかを調べていますので、TRUEです。
例えばこれらのメソッドは以下のように条件式で使います。
次はindexOfメソッド、lastIndexOfメソッド、substringメソッド、splitメソッドについて説明します。
では例をみてみましょう。
指定した文字列が見つからない場合は「-1」を返します。
初めに第1引数のみを指定した場合の例を見てみましょう。
この例では3なので、前から4番目の位置から、指定した「”pen”」のある位置を探して、その位置番号を返します。
つまり、以下の位置から検索を始めるので、結果は3です。
次はsubstringメソッドについて説明します。
初めに第1引数のみを指定した場合の例を見てみましょう。
indexOf で位置を確認して、substringで文字列を取り出すケースがよくありますので覚えておいてください。
次の例をみてみましょう。
次は第1引数と第2引数を指定した場合の例を見てみましょう。
第2引数は指定した位置から1を引いた位置までなので、eまでではなくて、dまでですので気を付けてください。
次はlastIndexOfメソッドについて説明します。
指定した文字列が見つからない場合は「-1」を返します。
初めに第1引数のみを指定した場合の例を見てみましょう。
bには6が入っているので、substringは「pen」を返します。
次に第1引数と第2引数を指定した場合の例を見てみましょう。
(下の例は先ほどのプログラムにはありません)
「指定した文字列」は「,」なので、これを基準に文字列を分割します。
そして、その分割したものを配列sに入れます。
結果は以下の通りです。
1=>abc
2=>def
3=>g