Aprendizaje de Kotlin: manipulación de cadenas

plantilla de cadena

1. Al igual que muchos lenguajes de secuencias de comandos, Kotlin nos permite referirnos a variables locales en cadenas literales, solo agregue un front $.

fun printName(name:String) {
    
    
    println("My name is $name")
}

Código de llamada:

fun main() {
    
    
    printName("Lily")
}

//运行结果
My name is Lily

2. También puede citar expresiones más complejas, simplemente encierre las expresiones entre paréntesis:${表达式}

fun printName(name: String) {
    
    
   println("Hello , ${
      
      if (name.isNotEmpty()) name else "someone"}")
}

Código de llamada:

fun main() {
    
    
    printName("Lily")
}

//运行结果
Hello , Lily

operador de cadena subcadena

Utilice el operador de truncamiento de cadenas substringpara truncar un segmento del nombre. La cadena interceptada contiene los caracteres del índice inicial, pero no contiene los caracteres del índice final.

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

También puede usar untilpalabras clave para lograr el mismo resultado que el anterior.

const val NAME = "Lucky's friends"

fun main() {
    
    
	val nameEndIndex = NAME.indexOf("\'")
	val name = NAME.substring(0 until nameEndIndex)
	println("nameEndIndex: $nameEndIndex | name: $name")
}

división del operador de cadena

const val NAMES = "Jack,Lucky,Tom"

fun main() {
    
    
	val names = NAMES.split(",")
    println(names[2])
}
//运行结果:Tom

splitDevuelve una colección List. La colección List admite la función de sintaxis de desestructuración , que permite asignar múltiples variables en una expresión. La deconstrucción se usa a menudo para simplificar la asignación de variables. Veamos un ejemplo:

const val NAMES = "Jack,Lucky,Tom"

fun main() {
    
    
	//解构语法特性
    val (s1, s2, s3) = NAMES.split(",")
    println("$s1,$s2,$s3")
}

//运行结果:Jack,Lucky,Tom

Por supuesto, hay un pequeño truco, si no quieres uno de los elementos, simplemente reemplaza la variable con un guión bajo, por ejemplo, si no queremos el segundo nombre, modifica el código de la siguiente manera:

const val NAMES = "Jack,Lucky,Tom"

fun main() {
    
    
    val (a, _, b) = NAMES.split(",")
    println("$a,$b")
}

//运行结果:Jack,Tom

operador de cadena reemplazar

El operador de reemplazo, el siguiente es un uso simple, puede ver que se genera una nueva cadena después del reemplazo y la cadena original no ha cambiado.

fun main() {
    
    
	val originStr = "reining day"
	val newStr1 = originStr.replace("e", "a")
	println(newStr1)
	println(originStr)
}

//运行结果:
//raining day
//reining day

Veamos un ejemplo más complejo, puede pasar una expresión regular para reemplazo, vea el siguiente ejemplo:

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

Operador de cadena paraCada

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 ** 

Operadores de cadena == y ===

En Kotlin , es ==equivalente a Java equals, que compara el contenido de las cadenas, devuelve lo mismo truey lo devuelve diferente false.

En Kotlin , es ===equivalente a Java ==, que compara las direcciones de las cadenas, devuelve lo mismo truey lo devuelve diferente false.

En el siguiente ejemplo, se declaran dos constantes de cadena. La primera cadena declarada se almacenará en el conjunto de constantes de cadena. Al declarar, primero irá al conjunto de constantes name2para ver si hay alguna. Si se define antes, directamente apunta al objeto, entonces name1y name2ambos apuntan a la misma cadena en el conjunto de constantes. Tanto la dirección como el contenido son los mismos.

fun main() {
    
    
    val name1 = "Lucky"
    val name2 = "Lucky"
    println(name1 == name2)
    println(name1 === name2)
}

//运行结果:true和true

Veamos otro ejemplo:

fun main() {
    
    
   val name1 = "Lucky"
   val name3 = "lucky".capitalize()
   println(name1 == name3)
   println(name1 === name3)
}
//运行结果:true和false

name3Aunque name1es el mismo que el contenido, capitalize()se generará un nuevo objeto cuando se vuelva a llamar, por lo que la dirección es la misma con el mismo contenido.

Supongo que te gusta

Origin blog.csdn.net/kongqwesd12/article/details/130967892
Recomendado
Clasificación