部分文字列
文字列インターセプト。加算とjavaでは、ktの部分文字列関数はIntRange型(整数の範囲を表す型)のパラメータをサポートしており、untilで作成される範囲には上限値が含まれません。
const val NAME = "Jimmy's friend"
fun main(){
val index = NAME.indexOf("\'") // 获取到 ' 所在位置的索引
// val str = NAME.substring(0, index) // 这种是 java 里的写法
val str = NAME.substring(0 until index) // TODO until 就是一个 IntRange 类型
println(str)
}
ここでの until は IntRange 型です。
スプリット
Split 関数は、リスト コレクション データを返します。リスト コレクションは、式内の複数の変数に値を割り当てることができる構造構文機能もサポートしています。構造体は、変数の割り当てを簡略化するためによく使用されます。
例:
const val NAMES = "Jack, Rose, Bot"
fun main(){
//val split = NAMES.split(", ") // split 是一个 List 集合
// split[0] // 拿里面的元素
val (one, two, three) = NAMES.split(", ") //TODO 把拆出来的每一个部分,分别赋给() 里的变量,这就是结构语法
println("$one $two $three")
}
構造構文: Split によって分割され、List に配置された要素は、式内の複数の変数に一度に割り当てることができます。
交換する
弦交換。
例: replace() の最初のパラメータ: 正規表現、2 番目のパラメータ: ラムダ式
fun main(){
// TODO replace()
val country = "The People's Republic of China."
val replace = country.replace(Regex("[aeiou]")) {
when (it.value) {
"a" -> "8"
"e" -> "2"
"i" -> "5"
"o" -> "7"
"u" -> "1"
else -> it.value
}
}
println(country)
println(replace)
}
*文字列比較
Kotlin では、== を使用して 2 つの文字列の文字が一致するかどうかを確認し、=== を使用して 2 つの変数がメモリ ヒープ上の同じオブジェクトを指しているかどうかを確認します。Java では、== は参照比較に使用され、equals は構造比較に使用されるメソッド。
例:
val str1 = "Jason"
val str2 = "Jason"
println(str1 == str2)
println(str1 === str2)
説明: 最初の「==」は、str1 と str2 の内容が同じかどうかを比較することを意味します。ここでは同じである必要があり、結果は true を返します。2 番目の「===」は、str1 と str2 が同じオブジェクトであるかどうかを比較し、ここでは true を返し、それらが同じオブジェクトであることを示します。その理由は、Java の JVM には文字列定数プールと呼ばれる文字列を保存するための別の場所があるためです。str1 = "Jason" を作成すると、"Jason" 文字列は定数プール内にあります。str2 = "Jason" を作成すると、JVM は別の "Jason" を格納するためにメモリ内に別のスペースを開きませんが、str2 は str1 によって作成された "Jason" 文字列のアドレスを直接指すようになります。したがって、str1 と str2 は同じオブジェクトです。
文字列のトラバーサル
forEach() を通じて文字列内の各文字を反復処理します。
例:
fun main(){
// TODO forEach
"HLLXY".forEach {
print("$it+")
}
}