Kotlin - 文字列操作
公開日:2019-11-06 更新日:2019-11-06
[Kotlin]
1. 概要
文字列操作を行います。
2. 文字列の結合
println("abc" + "def" + 123) // abcdef123
3. 文字列長の取得
val s:String = "0123456789"
println(s.length) // 10
4. 文字列の一部分の取得
val s:String = "0123456789"
println(s.substring(3)) // 3456789
println(s.substring(3, 6)) // 345
5. 文字列中の文字列の位置の取得
val s:String = "abcdefg"
println(s.indexOf("def")) // 3
指定した文字列が先頭または末尾にあるかどうかを取得することもできます。
println("0123456789".startsWith("012")) // true
println("0123456789".endsWith ("789")) // true
println("0123456789".endsWith ("012")) // false
6. 大文字・小文字の変換
println("abc".toUpperCase()) // ABC
println("ABC".toLowerCase()) // abc
先頭の文字だけ大文字、または小文字にします。
println("abcdefg".capitalize()) // Abcdefg
println("Abcdefg".decapitalize()) // abcdefg
7. 文字列の削除
先頭または末尾から、指定した文字数を削除します。
接頭辞、接尾辞を削除します。
指定した接頭辞、接尾辞がない場合は、何も削除されません。
インデックスで指定した範囲を削除します。
println("abcdefg".drop(3)) // defg
println("abcdefg".dropLast(3)) // abcd
接頭辞、接尾辞を削除します。
指定した接頭辞、接尾辞がない場合は、何も削除されません。
println("abcdefg".removePrefix("abc")) // defg
println("abcdefg".removeSuffix("efg")) // abcd
println("aaaaaaa".removeSuffix("abc")) // aaaaaaa
インデックスで指定した範囲を削除します。
println("abcdefg".removeRange(2, 5)) // abfg
8. 0埋め(ゼロパディング)
先頭または末尾を任意の文字で指定した桁になるまで埋めます。
println("123".padStart(10, '0')) // 0000000123
println("123".padEnd(10, '0')) // 1230000000
9. フォーマット
書式に沿った形に変換します。
println("%05d".format(123)) // 00123
println("%5d".format(123)) // 123
println("%d %s".format(123, "abc")) // 123 abc
10. 置換
文字列を置換します。
検索文字列を置換するのではなく、検索文字列の前後の文字列を置換することもできます。
println("abc abc abc".replace("ab", "c")) // cc cc cc
println("abc abc abc".replace("ab", "")) // c c c
println("abc abc abc".replace('a', 'c')) // cbc cbc cbc
検索文字列を置換するのではなく、検索文字列の前後の文字列を置換することもできます。
println("abc def hij".replaceBefore(" def ", "xxx")) // xxx def hij
println("abc def hij".replaceAfter (" def ", "xxx")) // abc def xxx
println("abc abc abc".replaceAfterLast ("a", "x")) // abc abc ax
println("abc abc abc".replaceBeforeLast("a", "x")) // xabc
11. 文字列の比較
文字列の大小を比較します。大文字・小文字の区別も指定可。
println("aaa".compareTo("aac", false)) // -2
println("aaa".compareTo("AAA", false)) // 32
println("aaa".compareTo("AAA", true)) // 0
println("aaa" > "AAA") // true
12. 文字列の中で変数の使用
変数名に $ を付けると、文字列中で変数を使うことができます。
また、${ } を使うと、処理を書くこともできます。
また、${ } を使うと、処理を書くこともできます。
val n = 123
val s = "test"
println("$s $n \$s ${s.toUpperCase()} ${1 + 2}") // test 123 $s TEST 3
13. ヒアドキュメント
""" で囲まれた複数行を1つの文字列にします。改行は改行として認識されます。
インデントもそのままインデントとして扱われるため、インデントが不要な場合は、インデントがなくなるように詰めて書くか、.trimIndent() でインデントを削除します。
また、$ をエスケープさせたい場合は、$ を ${'$'} にする必要があります。
インデントもそのままインデントとして扱われるため、インデントが不要な場合は、インデントがなくなるように詰めて書くか、.trimIndent() でインデントを削除します。
また、$ をエスケープさせたい場合は、$ を ${'$'} にする必要があります。
val n = 123
val s1 = "test"
val s2 = """
abc
def
ghi
$s1 $n ${'$'}s1 ${1 + 2}
""".trimIndent()
println(s2)
14. 分割と結合
分割
結合
var list = "1,2,3,4,5,6,7,8,9,10".split(",")
list.forEach{
print(it)
}
//結果: 12345678910
結合
var list = 1..10
var s = list.joinToString(",")
println(s) // 1,2,3,4,5,6,7,8,9,10