문자열 템플릿
1. 많은 스크립팅 언어와 마찬가지로 Kotlin을 사용하면 문자열 리터럴에서 지역 변수를 참조할 수 있습니다 $
.
fun printName(name:String) {
println("My name is $name")
}
호출 코드:
fun main() {
printName("Lily")
}
//运行结果
My name is Lily
2. 더 복잡한 표현식을 인용할 수도 있습니다. 표현식을 괄호로 묶으면 됩니다.${表达式}
fun printName(name: String) {
println("Hello , ${
if (name.isNotEmpty()) name else "someone"}")
}
호출 코드:
fun main() {
printName("Lily")
}
//运行结果
Hello , Lily
문자열 연산자 하위 문자열
문자열 자르기 연산자를 사용하여 substring
이름의 세그먼트를 자릅니다. 차단된 문자열에는 시작 인덱스의 문자가 포함되지만 종료 인덱스의 문자는 포함되지 않습니다.
const val NAME = "Lucky's friends"
fun main() {
val nameEndIndex = NAME.indexOf("\'")
val name = NAME.substring(0, nameIndex)
println("nameEndIndex: $nameEndIndex | name: $name")
}
//运行结果:nameEndIndex: 5 | name: Lucky
until
키워드를 사용하여 위와 동일한 결과를 얻을 수도 있습니다 .
const val NAME = "Lucky's friends"
fun main() {
val nameEndIndex = NAME.indexOf("\'")
val name = NAME.substring(0 until nameEndIndex)
println("nameEndIndex: $nameEndIndex | name: $name")
}
문자열 연산자 분할
const val NAMES = "Jack,Lucky,Tom"
fun main() {
val names = NAMES.split(",")
println(names[2])
}
//运行结果:Tom
split
List 컬렉션을 반환합니다. List 컬렉션은 하나의 표현식에 여러 변수를 할당할 수 있는 구조 분해 구문 기능을 지원합니다. 해체는 종종 변수 할당을 단순화하는 데 사용됩니다. 예를 보자:
const val NAMES = "Jack,Lucky,Tom"
fun main() {
//解构语法特性
val (s1, s2, s3) = NAMES.split(",")
println("$s1,$s2,$s3")
}
//运行结果:Jack,Lucky,Tom
물론 약간의 트릭이 있습니다. 요소 중 하나를 원하지 않으면 변수를 밑줄로 바꾸십시오. 예를 들어 두 번째 이름을 원하지 않으면 다음과 같이 코드를 수정하십시오.
const val NAMES = "Jack,Lucky,Tom"
fun main() {
val (a, _, b) = NAMES.split(",")
println("$a,$b")
}
//运行结果:Jack,Tom
문자열 연산자 바꾸기
교체 연산자, 다음은 간단한 사용법입니다. 교체 후 새 문자열이 생성되고 원래 문자열이 변경되지 않은 것을 볼 수 있습니다.
fun main() {
val originStr = "reining day"
val newStr1 = originStr.replace("e", "a")
println(newStr1)
println(originStr)
}
//运行结果:
//raining day
//reining day
더 복잡한 예를 살펴보겠습니다. 교체를 위해 정규 표현식을 전달할 수 있습니다. 다음 예를 참조하세요.
fun main() {
//加密下面的字符串
val fruits = "apple,banana,pear"
//第一个是正则表达式,决定替换哪些字符
//第二个是匿名函数,决定改如何替换正则表达式中的字符
val encryptionFruits = fruits.replace(Regex("[a,b,p]")) {
when (it.value) {
"a" -> "6"
"b" -> "7"
"p" -> "8"
else -> it.value
}
}
println(encryptionFruits)
}
//运行结果:688le,76n6n6,8e6r
문자열 연산자 forEach
const val NAME = "Lucky's friends"
fun main() {
//遍历forEach
NAME.forEach {
print("$it ** ")
}
}
//运行结果:L ** u ** c ** k ** y ** ' ** s ** ** f ** r ** i ** e ** n ** d ** s **
문자열 연산자 == 및 ===
Kotlin에서는 문자열의 내용을 비교하여 같은 내용을 반환 하고 다르게 반환하는 ==
Java와 동일 합니다 .equals
true
false
Kotlin에서는 문자열의 주소를 비교하여 같게 반환 하고 다르게 반환하는 ===
Java와 동일 합니다 .==
true
false
다음 예에서는 두 개의 문자열 상수를 선언합니다.첫 번째로 선언된 문자열은 문자열 상수 풀에 저장됩니다 name2
. 개체를 가리키므로 name1
둘 name2
다 상수 풀에서 동일한 문자열을 가리킵니다. 주소와 내용은 동일합니다.
fun main() {
val name1 = "Lucky"
val name2 = "Lucky"
println(name1 == name2)
println(name1 === name2)
}
//运行结果:true和true
다른 예를 살펴보겠습니다.
fun main() {
val name1 = "Lucky"
val name3 = "lucky".capitalize()
println(name1 == name3)
println(name1 === name3)
}
//运行结果:true和false
name3
name1
내용과 동일 하지만 capitalize()
다시 호출하면 새로운 객체가 생성되기 때문에 주소는 같은 내용으로 동일합니다.