Kotlin 학습 - 문자열 조작

문자열 템플릿

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

splitList 컬렉션을 반환합니다. 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와 동일 합니다 .equalstruefalse

Kotlin에서는 문자열의 주소를 비교하여 같게 반환 하고 다르게 반환하는 ===Java와 동일 합니다 .==truefalse

다음 예에서는 두 개의 문자열 상수를 선언합니다.첫 번째로 선언된 문자열은 문자열 상수 풀에 저장됩니다 name2. 개체를 가리키므로 name1name2다 상수 풀에서 동일한 문자열을 가리킵니다. 주소와 내용은 동일합니다.

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

name3name1내용과 동일 하지만 capitalize()다시 호출하면 새로운 객체가 생성되기 때문에 주소는 같은 내용으로 동일합니다.

추천

출처blog.csdn.net/kongqwesd12/article/details/130967892