文字列の取得の方法としてメモ書き。
Stringクラスには、最初に出現する文字列を取得する場合にはindexOfメソッドを、最後に出現する文字列を取得する場合はlastIndexOfメソッドを使用することで特定の文字列を取得することができる。
基本的な書き方はこんな感じ。
最初に出現する位置 = オブジェクト.indexOf(値)
最後に出現する位置 = オブジェクト.lastIndexOf(値)
今回はStringクラスでの使用方法についてまとめてみる。
⑴indexOfメソッド
・indexOf(int ch)
(戻り値の型はint)
この文字列内で、指定された文字が最初に出現する位置のインデックスを返します。値chを持つ文字がこのStringオブジェクトによって表される文字シーケンス内にある場合、最初に出現する位置のインデックス(Unicodeコード単位)が返されます。chの値が0から0xFFFFの範囲にある場合、次の式がtrueとなるような最小値kが返されます。
this.charAt(k) == ch
がtrueである。chがほかの値の場合、次の式がtrueとなるような最小値kです。
this.codePointAt(k) == ch
がtrueである。該当する文字がこの文字列内にない場合は、-1が返されます。
パラメータ:
ch - 文字(Unicodeコード・ポイント)。
戻り値:
このオブジェクトによって表される文字シーケンス内で、指定された文字が最初に出現する位置のインデックス。文字がない場合は-1。
・indexOf(int ch, int fromIndex)
(戻り値の型はint)
この文字列内で、指定されたインデックスから検索を開始し、指定された文字が最初に出現する位置のインデックスを返します。
値chを持つ文字が、このStringオブジェクトによって表される文字シーケンスのfromIndexより大きいか同じインデックス位置にある場合、該当する最初のインデックスが返されます。chの値が0から0xFFFFの範囲にある場合、次の式がtrueとなるような最小値kが返されます。
(this.charAt(k) == ch) && (k >= fromIndex)
がtrueである。chがほかの値の場合、次の式がtrueとなるような最小値kです。
(this.codePointAt(k) == ch) && (k >= fromIndex)
がtrueである。いずれの場合も、そのような文字がこの文字列内の位置fromIndexかそれより後に存在しない場合は、-1が返されます。
fromIndexの値に対して制約はない。負の値の場合は、ゼロの場合と同じ結果になります。この文字列全体が検索されます。この文字列の長さより大きい場合は、この文字列の長さに等しい場合と同じ結果になり、-1が返されます。
すべてのインデックスは、char値(Unicodeコード単位)で指定されます。
パラメータ:
ch - 文字(Unicodeコード・ポイント)。
fromIndex - 検索開始位置のインデックス。
戻り値:
このオブジェクトによって表される文字列で、指定された文字がfromIndexと同じかこれより大きいインデックス位置にある場合は、最初に出現した位置のインデックス。文字がない場合は-1。
(2)lastIndexOfメソッド
・lastIndexOf(int ch)
この文字列内で、指定された文字が最後に出現する位置のインデックスを返します。ch値が0から0xFFFFの範囲にある場合、返されるインデックス(Unicodeコード単位)は、次の式に該当する最大値kです。
this.charAt(k) == ch
がtrueである。chがほかの値の場合、次の式がtrueとなるような最大値kです。
this.codePointAt(k) == ch
がtrueである。該当する文字がこの文字列内にない場合は、-1が返されます。Stringの検索は最後の文字から開始され、先頭方向に行われます。
パラメータ:
ch - 文字(Unicodeコード・ポイント)。
戻り値:
このオブジェクトによって表される文字シーケンス内で、指定された文字が最後に出現する位置のインデックス。文字がない場合は-1。
・lastIndexOf(int ch, int fromIndex)
(戻り値の型はint)
この文字列内で、指定された文字が最後に出現する位置のインデックスを返します(検索は指定されたインデックスから開始され、先頭方向に行われる)。ch値が0から0xFFFFの範囲にある場合、返されるインデックスは、次の式に該当する最大値kです。
(this.charAt(k) == ch) && (k <= fromIndex)
がtrueである。chがほかの値の場合、次の式がtrueとなるような最大値kです。
(this.codePointAt(k) == ch) && (k <= fromIndex)
がtrueである。いずれの場合も、そのような文字がこの文字列内の位置fromIndexかそれより前に存在しない場合は、-1が返されます。
すべてのインデックスは、char値(Unicodeコード単位)で指定されます。
パラメータ:
ch - 文字(Unicodeコード・ポイント)。
fromIndex - 検索開始位置のインデックス。fromIndexの値に対して制約はない。この文字列の長さと同じかこれより大きい場合は、この文字列の長さより1小さい場合と同じ結果になり、この文字列全体が検索される。負の値の場合は、-1の場合と同じ結果になり、-1が返される。
戻り値:
このオブジェクトによって表される文字シーケンス内で、指定された文字がfromIndexと同じかこれより小さいインデックス位置に最後に出現する位置のインデックス。指定された文字がその位置より前にない場合は-1。
参考サイト
・Java(tm) Platform Standard Edition 8 クラスString
https://docs.oracle.com/javase/jp/8/docs/api/index.html?overview-summary.html
・すぐに使える!JavaのindexOfとlastIndexOf - エンジニアの入り口
https://eng-entrance.com/java-indexof