Read Article

文字列を操作するメソッドを知ろう

広告

この章では文字列に関するメソッドについて説明します。
先ほどは自身でメソッドを作成しましたが、ここで説明するメソッドはJavaであらかじめ用意されているメソッドです。
Javaのメソッドの仕組みはエクセルの関数の仕組みと意味は同じです。
エクセルをご存知の方はわかると思いますが、例えばエクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。例えば指定した範囲の引数が3,5,7であるならば結果は15です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
Javaにはこのように機能が定義されているメソッドが多数ありますので、この章では文字列に関係するメソッドを取り上げたいと思います。
例えば文字列の一部を取り出したり、文字列の長さを計るメソッドです。
次の例ではユーザーに入力させた文字が反対から読んでも同じ文字かどうかを判定するプログラムです。
プログラムの流れは以下の通りです。
〇ユーザーに文字を入力させる
〇入力した文字を反対に並び替える
〇ユーザーが入力した文字と反対に並び替えた文字が同じかどうかを比べる。
では例をみてみましょう。1111 では順番に解説をしていきます。
〇ユーザーに文字を入力させるのですが、ユーザーに入力させるためには以下の記述が必要であることは「if文で星座を判定しよう」で説明しました(BufferedReaderクラスの説明は「キーボードの入力の値を受け取ろう」で説明します)。1 ここではユーザーに入力させた文字をa変数に入れているということを確認してください。
〇次は入力した文字を反対に並び換えます。
入力した文字をcharAtメソッドを使用して、末尾から一文字ずつ取り出して反対文字を作成します。
charAtメソッドは指定した位置にある文字を取り出すメソッドですが、基本構文は以下の通りです。1 例えば「ANA」と入力したとします。
末尾のAを取り出したい場合には1と書きます。
数え方は前から0,1,2…と数えます。1から数えるわけではないので気を付けてください。1 では次の箇所の説明をします。1 charAtのカッコの中の1は文字列の長さを取得しています。1 「ANA」をline.length()で取得すると文字列の長さは3になります。
この例ではfor文で回しているので、iには0から順に数字が入ります。1 文字列の長さから1を引くことで文字列の末尾から順にmoji変数に入れることが出来ます。
moji変数には1文字しか入れないのでデータ型はcharにします。
そして以下のhantai変数にmoji変数の要素をつなげています。
hantai += moji;

〇以下の箇所でユーザーが入力した文字と反対に並び替えた文字が同じかどうかを比べています。
文字列同士を比べているのでequalsを使っています。1 結果は「ANA」と入力したとすると以下のとおり出力されます。1
では次の例を見てみましょう。11 この例は変数mojiが指定した文字で始まっているのか、もしくは指定した文字で終わっているのかを確認するメソッドを使っています。
指定した文字で始まっているのかを調べるメソッドはstartsWithメソッドであり、指定した文字で終わっているのかを調べるにはendsWithメソッドを使います。1 startsWithメソッドの場合は指定した文字で始まっていればRUEを返し、そうでないならばFALSEを返します。
endsWithメソッドの場合は指定した文字で終わっていればTRUEを返し、そうでないならばFALSEを返します。
構文のstartsWithの中の1には整数を入れるのですが、確認したい文字列が1から始まっているのかを調べます。
では説明を始めます。1 =>moji変数はkoから始まっているので、TRUEです。

1 => moji変数はdoから始まっていないので、FALSEです。

1 =>3は「kondou」の前から数えてdの位置です。
doが3の位置から始まっているのかを調べていますので、TRUEです。

1 => moji変数はouで終わっているので、TRUEです。

1 => moji変数はdoで終わっていないので、FALSEです。
例えばこれらのメソッドは以下のように条件式で使います。1 もし、条件式がTRUEであれば、if文を実行して、FALSEであればif文を実行しません。

次はindexOfメソッド、lastIndexOfメソッド、substringメソッド、splitメソッドについて説明します。
では例をみてみましょう。111 初めにindexOfメソッドについて説明します。1 indexOfメソッドは文字列の中で指定した文字列が初めに何番目に現れるかを0から数えた位置番号で返します。
指定した文字列が見つからない場合は「-1」を返します。1 indexOfの第2引数に検索を開始する位置番号がありますが、これは第2引数で指定した位置から検索を始めることを意味します。
初めに第1引数のみを指定した場合の例を見てみましょう。1 =>「”penpenpen”」の中で1が初めに見つかった位置を返すので、0がbに入ります。以下の赤で囲まれている位置に一致するので0を返します。1 次に第1引数と第2引数を指定した場合の例を見てみましょう。1 => indexOfに第2引数がありますが、これは第 2引数で指定した位置から検索を始めることを意味します。
この例では3なので、前から4番目の位置から、指定した「”pen”」のある位置を探して、その位置番号を返します。
つまり、以下の位置から検索を始めるので、結果は3です。1

次はsubstringメソッドについて説明します。1 文字列の中で第1引数に指定した開始位置番号から末尾までの新しい文字列を返します。1 第1引数と第2引数の両方を指定した場合は、第1引数で指定した位置から第2引数で指定した位置から1を引いた位置までの新しい文字列を返します。
初めに第1引数のみを指定した場合の例を見てみましょう。1 =>bには0が入っていますので、先頭から末尾までの文字列を返しますので、結果は1です。
indexOf で位置を確認して、substringで文字列を取り出すケースがよくありますので覚えておいてください。
次の例をみてみましょう。1 substring は bの位置から末尾までの文字列を返すので、結果は1です。
次は第1引数と第2引数を指定した場合の例を見てみましょう。1 第1引数と第2引数の両方を指定した場合は第1引数で指定した位置から第2引数で指定した位置から1を引いた位置までの新しい文字列を返しますので結果は1です。
第2引数は指定した位置から1を引いた位置までなので、eまでではなくて、dまでですので気を付けてください。

次はlastIndexOfメソッドについて説明します。1 lastIndexOfメソッドは文字列の中で指定した文字列が最後に何番目に現れるかを0から数えた位置番号で返します。
指定した文字列が見つからない場合は「-1」を返します。1 lastIndexOfの検索を開始する位置番号はこの指定した位置から先頭に向かって検索を始めることを意味します。
初めに第1引数のみを指定した場合の例を見てみましょう。1 =>「”pen”」が最後に現れる箇所なので、lastIndexOfは6を返します。
bには6が入っているので、substringは「pen」を返します。
次に第1引数と第2引数を指定した場合の例を見てみましょう。
(下の例は先ほどのプログラムにはありません)1 第 2引数は4なので、sの位置から左に検索をかけて、初めに見つかったaの位置を返しますので、結果は3です。1 次はsplitメソッドについて説明します。1 splitメソッドは指定した文字列で分割して、その分割したものを配列で返します。1
「指定した文字列」は「,」なので、これを基準に文字列を分割します。
そして、その分割したものを配列sに入れます。
結果は以下の通りです。
1=>abc
2=>def
3=>g

URL :
TRACKBACK URL :
Return Top