この章では文字列を操作するメソッドについて説明します。
これまでは自身でメソッドを作成してきましたが、C#には初めから機能が定義されているメソッドが複数あります。 =>CompareToメソッドは2つの文字列のデータを比べて、等しければ0を返し、aがbより大きければ0より大きい整数を返し、aがbより小さければ0より小さい値を返します。
では例をみてみましょう。 この例ではaとbは等しいので、0が返ってきますので、結果は「等しい」が出力されます。 =>IndexOfメソッドは文字列aの中から文字列bの位置を先頭から検索して、見つかった場合にはその文字列の位置番号を返します。
その文字列が見つからない場合には-1が返されます。 =>LastIndexOfメソッドは文字列aの中から文字列bの位置を後ろから検索して、見つかった場合にはその文字列の位置番号を返します。
その文字列が見つからない場合には-1が返されます。
では例をみてみましょう。 =>Containsメソッドは文字列aの中に文字列bの文字列が含まれている場合には「TRUE」が返されます。
では例をみてみましょう。 =>IsNullOrEmptyメソッドは文字列がnullかどうか もしくは文字列に何も入っていないかどうかを調べるメソッドです。
nullもしくは文字列に何も入っていない場合にはTRUEを返します。
nullは何のデータもないと言う意味です。
カラの文字列を表現するにはダブルクォートを連続して2つ書きます。
では例をみてみましょう。 結果はaには何も入っていないので「yes」が出力されます。
タグ: lastIndexOf
この章ではStringオブジェクトについて説明します。これも組み込みオブジェクトなので、簡単に文字列に関しての機能を使うことが出来ます。 初めにオブジェクトを作成してから、様々なメソッドなどを実行します。 lengthは文字列の長さを取得します。
では例をみてみましょう。 全角文字、半角文字ともに1と、数えます。
結果は「8」です。 charAtは文字列の一部を取り出します。
ここでの注意は「取り出す文字の位置」は0から数えてください。 1から数えるのではないので注意してください。
a.charAt(30)のように指定した数が文字数を超えているような場合はカラが返されます(何も表示されない)
では例をみてみましょう。 指定位置の数え方は以下のようになります。
0番目=>a
1番目=>b
2番目=>c
結果は「b」です。 substringメソッドは指定した範囲の文字列を取り出します。
引数で「取り出す文字列の範囲」を指定して、その個所を取り出します。
例えばa.substring(0,3)は0番目の文字から3番目の文字の一つ前までを取り出すと言う意味です。終了位置の一つ前までなので気を付けてください。
では例をみてみましょう。 substring(0,2)
=>0番目から2番目の手前までなので、答えはabです。
substring(2,0)
=>開始位置のほうが終了位置より大きい場合は後ろから前へ数えます。つまり2番目のひとつ前(つまりb)から、先頭まで取り出しますので、答えはabです。
substring(4,7)
=> 4番目から7番目の手前までなので、答えはefgです。
substring(4)
=>終了位置を省略した場合はその位置から末尾まですべて取り出すので、結果はefghiです。 sliceメソッドは指定した範囲の文字列を取り出します。
引数で「取り出す文字列の範囲」を指定して、その範囲を取り出します。
例えばa.slice (0,3)は0番目の文字から3番目の文字の一つ手前までを取り出すと言う意味です。
では例をみてみましょう。 slice (0,3)
=>0番目から3番目の手前まで。
答えはabc です。
slice (4,7)
=> 4番目から7番目の手前まで。
答えはdef です。
slice (2,0)
=>開始位置の番号のほうが終了位置の番号より大きい場合は何も返されません。
slice(4)
=>終了位置を省略した場合はその位置から末尾まですべて取り出します。
結果はdef ghiです。
slice(-11,-8)
=>sliceでは開始位置、終了位置ともにマイナスの指定も出来ます。マイナス指定の場合は末尾からと、数えます。
結果はabcです。
slice(-11,7)
=>このように開始位置がマイナス指定で、終了位置がプラス指定と言う組み合わせも可能です。
結果はabc defです。
slice(4,-2)
=>このように開始位置がプラス指定で、終了位置がマイナス指定と言う組み合わせも可能です。 結果はdef gです。 => concatメソッドは文字列と文字列を結合する機能を持っています。
文字列1,文字列2….を結びつけます。
文字列は「,」で区切れば何個でも書けます。
以下のようにconcatと同じ結果が「+」を使用しても実現できます。
では例をみてみましょう。 substrメソッドは指定した範囲の文字列を取り出します。
では例をみてみましょう。 substr (0,3)
=>0番目から3つ切り取ります。
結果はabc です。
substr (4,7)
=> 4番目から7つ切り取ります。
結果はdef ghiです。
substr (2,0)
=> 2番目から0個なので何も返されません。
substr (4)
=>個数を省略した場合はその位置から末尾まですべて取り出します。
結果はdef ghiです。
substr (-11,-8)
=>個数のマイナスの指定はできません。ですので、何も表示されません。
substr (-11,7)
=>このように開始位置がマイナス指定で、個数がプラス指定と言う組み合わせも可能です。
結果はabc defです。 indexOfは指定した文字列を先頭から右側に向かって検索します。
検索した結果、その文字がなかった場合は-1が返りますし、文字が見つかった場合はその文字の先頭位置を返します。
検索開始位置を省略した場合は0が指定されたとみなされます。
では例をみてみましょう。 結果は「8」と「9」です。 検索開始位置の2(cの部分)はここから右方向に検索が始まるというだけで、返される番号は先頭から数えた数になるので注意してください。
つまり,cの部分から数えた数が返されるのではありません。 lastIndexOfは指定した文字列を後ろから先頭に向かって検索します。
検索した結果、その文字がなかった場合は-1が返りますし、文字が見つかった場合はその文字の先頭位置を返します。
検索開始位置を省略した場合は末尾が指定されたとみなされます。
以下の例はlastIndexとindexOfを較べています。 =>末尾から検索しているので、gchiのcが該当します
=>先頭から数えているので、abcのcが該当します
=>前から数えて6番目の文字(この例ではdです)から先頭に向かって検索します。hiは4番目にあるので4が返されます(ヒットした位置は先頭から数えます)。
=>前から数えて6番目の文字(この例ではdです)から末尾に向かって検索します。hiは12番目にあるので12が返されます。
toLowerCaseメソッドは文字列を小文字に変換します。
toUpperCaseメソッドは文字列を大文字に変換します。
では例をみてみましょう。 結果は
「abcdefg」
と
「ABCDEFG」
です。 charCodeAtメソッドは引数で指定した箇所にある文字のUnicode の値を返します。
Unicodeは「世界中の文字を共通した方法で符号化」して、コンピュータ上で扱えるように作られた文字コードです。
では例をみてみましょう。 Cの文字コードは67なので
結果は「67」です。
charCodeAt で返されるUnicodeの値は65.536より小さい値を返します。
文字列を操作するメソッドを知ろう
この章では文字列に関するメソッドについて説明します。
先ほどは自身でメソッドを作成しましたが、ここで説明するメソッドはJavaであらかじめ用意されているメソッドです。
Javaのメソッドの仕組みはエクセルの関数の仕組みと意味は同じです。
エクセルをご存知の方はわかると思いますが、例えばエクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。例えば指定した範囲の引数が3,5,7であるならば結果は15です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
Javaにはこのように機能が定義されているメソッドが多数ありますので、この章では文字列に関係するメソッドを取り上げたいと思います。
例えば文字列の一部を取り出したり、文字列の長さを計るメソッドです。
次の例ではユーザーに入力させた文字が反対から読んでも同じ文字かどうかを判定するプログラムです。
プログラムの流れは以下の通りです。
〇ユーザーに文字を入力させる
〇入力した文字を反対に並び替える
〇ユーザーが入力した文字と反対に並び替えた文字が同じかどうかを比べる。
では例をみてみましょう。 では順番に解説をしていきます。
〇ユーザーに文字を入力させるのですが、ユーザーに入力させるためには以下の記述が必要であることは「if文で星座を判定しよう」で説明しました(BufferedReaderクラスの説明は「キーボードの入力の値を受け取ろう」で説明します)。 ここではユーザーに入力させた文字をa変数に入れているということを確認してください。
〇次は入力した文字を反対に並び換えます。
入力した文字をcharAtメソッドを使用して、末尾から一文字ずつ取り出して反対文字を作成します。
charAtメソッドは指定した位置にある文字を取り出すメソッドですが、基本構文は以下の通りです。 例えば「ANA」と入力したとします。
末尾のAを取り出したい場合にはと書きます。
数え方は前から0,1,2…と数えます。1から数えるわけではないので気を付けてください。 では次の箇所の説明をします。 charAtのカッコの中のは文字列の長さを取得しています。 「ANA」をline.length()で取得すると文字列の長さは3になります。
この例ではfor文で回しているので、iには0から順に数字が入ります。 文字列の長さからを引くことで文字列の末尾から順にmoji変数に入れることが出来ます。
moji変数には1文字しか入れないのでデータ型はcharにします。
そして以下のhantai変数にmoji変数の要素をつなげています。
hantai += moji;
〇以下の箇所でユーザーが入力した文字と反対に並び替えた文字が同じかどうかを比べています。
文字列同士を比べているのでequalsを使っています。 結果は「ANA」と入力したとすると以下のとおり出力されます。
では次の例を見てみましょう。 この例は変数mojiが指定した文字で始まっているのか、もしくは指定した文字で終わっているのかを確認するメソッドを使っています。
指定した文字で始まっているのかを調べるメソッドはstartsWithメソッドであり、指定した文字で終わっているのかを調べるにはendsWithメソッドを使います。 startsWithメソッドの場合は指定した文字で始まっていればRUEを返し、そうでないならばFALSEを返します。
endsWithメソッドの場合は指定した文字で終わっていればTRUEを返し、そうでないならばFALSEを返します。
構文のstartsWithの中のには整数を入れるのですが、確認したい文字列がから始まっているのかを調べます。
では説明を始めます。 =>moji変数はkoから始まっているので、TRUEです。
=> moji変数はdoから始まっていないので、FALSEです。
=>3は「kondou」の前から数えてdの位置です。
doが3の位置から始まっているのかを調べていますので、TRUEです。
=> moji変数はdoで終わっていないので、FALSEです。
例えばこれらのメソッドは以下のように条件式で使います。 もし、条件式がTRUEであれば、if文を実行して、FALSEであればif文を実行しません。
次はindexOfメソッド、lastIndexOfメソッド、substringメソッド、splitメソッドについて説明します。
では例をみてみましょう。 初めにindexOfメソッドについて説明します。 indexOfメソッドは文字列の中で指定した文字列が初めに何番目に現れるかを0から数えた位置番号で返します。
指定した文字列が見つからない場合は「-1」を返します。 indexOfの第2引数に検索を開始する位置番号がありますが、これは第2引数で指定した位置から検索を始めることを意味します。
初めに第1引数のみを指定した場合の例を見てみましょう。 =>「”penpenpen”」の中でが初めに見つかった位置を返すので、0がbに入ります。以下の赤で囲まれている位置に一致するので0を返します。 次に第1引数と第2引数を指定した場合の例を見てみましょう。 => indexOfに第2引数がありますが、これは第 2引数で指定した位置から検索を始めることを意味します。
この例では3なので、前から4番目の位置から、指定した「”pen”」のある位置を探して、その位置番号を返します。
つまり、以下の位置から検索を始めるので、結果は3です。
次はsubstringメソッドについて説明します。 文字列の中で第1引数に指定した開始位置番号から末尾までの新しい文字列を返します。 第1引数と第2引数の両方を指定した場合は、第1引数で指定した位置から第2引数で指定した位置から1を引いた位置までの新しい文字列を返します。
初めに第1引数のみを指定した場合の例を見てみましょう。 =>bには0が入っていますので、先頭から末尾までの文字列を返しますので、結果はです。
indexOf で位置を確認して、substringで文字列を取り出すケースがよくありますので覚えておいてください。
次の例をみてみましょう。 substring は bの位置から末尾までの文字列を返すので、結果はです。
次は第1引数と第2引数を指定した場合の例を見てみましょう。 第1引数と第2引数の両方を指定した場合は第1引数で指定した位置から第2引数で指定した位置から1を引いた位置までの新しい文字列を返しますので結果はです。
第2引数は指定した位置から1を引いた位置までなので、eまでではなくて、dまでですので気を付けてください。
次はlastIndexOfメソッドについて説明します。 lastIndexOfメソッドは文字列の中で指定した文字列が最後に何番目に現れるかを0から数えた位置番号で返します。
指定した文字列が見つからない場合は「-1」を返します。 lastIndexOfの検索を開始する位置番号はこの指定した位置から先頭に向かって検索を始めることを意味します。
初めに第1引数のみを指定した場合の例を見てみましょう。 =>「”pen”」が最後に現れる箇所なので、lastIndexOfは6を返します。
bには6が入っているので、substringは「pen」を返します。
次に第1引数と第2引数を指定した場合の例を見てみましょう。
(下の例は先ほどのプログラムにはありません) 第 2引数は4なので、sの位置から左に検索をかけて、初めに見つかったaの位置を返しますので、結果は3です。 次はsplitメソッドについて説明します。 splitメソッドは指定した文字列で分割して、その分割したものを配列で返します。
「指定した文字列」は「,」なので、これを基準に文字列を分割します。
そして、その分割したものを配列sに入れます。
結果は以下の通りです。
1=>abc
2=>def
3=>g