Kotlin で 文字列から特定の文字を検索する際は、indexOf を使用します。
目次
indexOfの使い方
indexOf の戻り値はInt型で、検索対象の文字列がはじめに出現するインデックスが返されます。
検索対象が見つからない場合は、-1 が返されます。
また、引数の指定により、次の検索ができます。
- 文字列の始めから検索する
- 指定した開始インデックスから検索する
- 大文字・小文字を区別しないで検索する
1. 文字列の始めから検索する
書式
変数.indexOf("検索文字")
例)文字列 “abcde” から “cd” を検索する
1 2 3 4 |
val str = "abcde" val positionIdx = str.indexOf("cd") println( positionIdx ) // 2 |
indexOfの戻り値は、”cd” が 最初に現れる位置インデックス(2)になります。
2. 指定した開始インデックスから検索する
書式
変数.indexOf("検索文字","開始インデックス")
例)インデックスが1以降の文字列を対象に、”a” を検索する
1 2 3 4 |
val str = "abcabc" val positionIdx = str.indexOf("a", 1) println( positionIdx ) // 3 |
文字列 “abcabc” には、a が 2箇所(インデックスが 0 と 3)ありますが、開始インデックスに 1 を指定しているため、インデックスが 0 の “a” は検索対象から除外され、インデックスが 3 の “a” が検索されます。
開始インデックスを指定しない場合は、デフォルトが 0 で指定されるので、文字列の先頭から検索されます。
3. 大文字・小文字を区別しないで検索する
書式
変数.indexOf("検索文字","開始インデックス", true )
例)検索文字の大文字・小文字を区別しない
1 2 3 4 |
val str = "abcdeABCDE" val positionIdx = str.indexOf("A", 0, true) println( positionIdx ) // 0 |
検索文字は “A” ですが、大文字・小文字を区別しない(第3引数にtrueを指定)ので、戻り値のインデックスは、0 になります。
第3引数を未指定の場合は、デフォルトが false になるので、次のように大文字・小文字は区別されます。
1 2 3 4 |
val str = "abcdeABCDE" val positionIdx = str.indexOf("A") println( positionIdx ) // 5 |
4. 検索文字が存在しない
検索文字が存在しない場合は、-1 が返されます。
1 2 3 4 |
val str = "abcde" val positionIdx = str.indexOf("z") println( positionIdx ) // -1 |