説明 | splitとは(文字列を分割してリストにする) |
サンプル | カンマで区切る |
半角スペースで区切る | |
タブで区切る | |
スラッシュで区切る | |
改行で区切る | |
ドットで区切る | |
空文字で区切る(1文字ずつ配列にする) | |
末尾が区切り文字の時、最後は要素になる? | |
複数の区切り文字を指定 | |
2つ目の引数 | 取得する要素数を指定 |
splitとは(文字列を分割してリストにする)
public fun CharSequence.split(vararg delimiters: String, ignoreCase: Boolean = false, limit: Int = 0): List<String> |
- splitは、文字列を指定した区切り文字で分割してStringのListを返します。
- 以下はKotlinのsplitのリンクです。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/split.html
カンマで区切る
fun main() {
val str1 = "a,b,c"
val arr1 = str1.split(",")
for (a in arr1) {
println(a) //a b c
}
}
4行目は、splitメソッドで文字列をカンマで区切ってリストにしています。
半角スペースで区切る
fun main() {
val str1 = "a b c"
val arr1 = str1.split(" ")
for (a in arr1) {
println(a) //a b c
}
}
4行目は、splitメソッドで文字列を半角スペースで区切ってリストにしています。
タブで区切る
fun main() {
val str1 = "a b c"
val arr1 = str1.split("\t")
for (a in arr1) {
println(a) //a b c
}
}
4行目は、splitメソッドで文字列をタブで区切ってリストにしています。
スラッシュで区切る
fun main() {
val str1 = "2020/05/21"
val arr1 = str1.split("/")
for (a in arr1) {
println(a) //2020 05 21
}
}
4行目は、スラッシュで区切ってリストにしています。
改行で区切る
fun main() {
val str1 = "赤と黄\r\n青と\n緑"
val arr1 = str1.split("\r\n","\n")
for (a in arr1) {
println(a) //赤と黄 青と 緑
}
println(arr1.size) // 3
}
\r\nは復帰改行(CRLF)、\nは改行(LF)を意味します。
ドットで区切る
fun main() {
val str = "test.txt"
val arr = str.split(".")
for (a in arr) {
println(a) //test txt
}
println(arr.size) // 2
}
区切り文字としてドットをそのまま指定します。
空文字で区切る(1文字ずつ配列にする)
fun main() {
val str1 = "abc"
val arr1 = str1.split("")
println(arr1.size) // 5
var arr2 = str1.toCharArray()
println(arr2.size) // 3
for (a in arr2) {
println(a) //a b c
}
}
2行目は、区切り文字はありません。
4行目のsplitメソッドの引数は空文字で1文字ずつのリストになりますが余分な空文字も入ってしまいます。
7行目のようにtoCharArrayを使用すると空文字は入りません。
末尾が区切り文字の時、最後は要素になる?
fun main() {
val str1 = "a,b,c,,"
val array1 = str1.split(",")
println(array1.size) // 5
for (a in array1) {
println(a) //「a」「b」「c」「」「」
}
val array2 = str1.split(",").dropLastWhile { it.isEmpty() }
println(array2.size) // 3
for (a in array2) {
println(a) //「a」「b」「c」
}
}
2行目は、末尾がカンマで終わっています。
4行目はsplitメソッドのカンマで区切っています。空文字も取得し要素は5つになります。
10行目はsplitメソッドとdropLastWhileとisEmpty()で末尾の2つの空文字を削除しています。
複数の区切り文字を指定
区切り文字としてコロン(:)とカンマ(,)を指定しています。
fun main() {
val str1 = "1:a,2:b,3:c"
val arr1 = str1.split(",",":")
for (a in arr1) {
println(a) //1 a 2 b 3 c
}
}
4行目のカンマ(,)とコロン(:)を単純にカンマで区切っています。
取得する要素数を指定
引数のlimit=数値は、戻り値の要素数の上限になります。
fun main() {
val str1 = "a,b,c,d,e,f,g"
val array1 = str1.split(",",limit = 3)
for (a in array1) {
println(a) //「a」「b」「c,d,e,f,g」
}
}
4行目は、2つ目の引数がlimit=3です。戻りの要素数は3つになります。
関連の記事
Kotlin substring 文字列を切り出す
kotlin 文字列を結合する(StringBuilder/+/join)>