English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Cadenas de Kotlin y plantillas de strings

En este artículo, aprenderá a usar ejemplos para aprender cadenas de Kotlin, plantillas de strings y algunas propiedades y funciones de strings comunes.

Cadena de Kotlin (cadena)

Las cadenas son secuencias de caracteres. Por ejemplo, "¡Hola aquí!" es una literal de cadena.

En Kotlin, todas las cadenas son objetos de la clase String. Esto significa que las cadenas literales como "¡Hola aquí!" se implementan como instancias de esa clase.

¿Cómo crear una variable de cadena?

Esto es cómo se define una variable de tipo String en Kotlin. Por ejemplo,

val miCadena = "¡Hey allí!"

Aquí, miCadena es una variable de tipo String.

Puede declarar una variable de tipo String y especificar su tipo en una sola instrucción, luego inicializarla en otra instrucción del programa más tarde.

val miCadena: String
... .. ...
miCadena = "¡Hola!"

¿Cómo acceder a los caracteres de una cadena?

Para acceder a un elemento (carácter) de una cadena, utilice el operador de acceso de índice. Por ejemplo,

val miCadena = "¡Hey allí!"
val item = miCadena[2]

Aquí, la variable item contiene el tercer carácter 'y' de la cadena miCadena. Esto se debe a que los índices en Kotlin comienzan en 0 en lugar de 1。

val miCadena = "¡Hey allí!"
var item: Char
item = miCadena[0]    // item = 'H'
item = miCadena[9]    // item = '!'
item = miCadena[10]   // ¡Error! Índice de cadena fuera de rango
item =  miCadena[-1]  // ¡Error! Índice de cadena fuera de rango

Ejemplo: recorrer una cadena

Si necesita recorrer los elementos de una cadena, puede usarBucle forFácilImplementación

fun main(args: Array<String>) {
    val miCadena = "¡Hey!"
    for (item in miCadena) {
        println(item)
    }
}

Al ejecutar el programa, la salida es:

H
e
y
!

Las cadenas en Kotlin son inmutables

Al igual que en Java, las cadenas en Kotlin son inmutables. Esto significa que no puede cambiar un solo carácter de la cadena. Por ejemplo,

var miCadena = "¡Hey!"
miCadena[0] = 'h'      // ¡Error! Cadenas

Sin embargo, si se declara una variable de cadena utilizando la palabra clave var, se puede reasignar esa variable。(Recomendaciones de lecturaKotlin var Vs val

Ejemplo: reasignación de la variable de cadena.

fun main(args: Array<String>) {
    var miCadena = "¡Hey!"
    println("miCadena  = $miCadena")
    miCadena = "¡Hola!"
    println("miCadena  = $miCadena")
}

Al ejecutar el programa, la salida es:

myString = Hey!
myString = Hello!

Texto literal

Los literals son la representación en código fuente de valores fijos. Por ejemplo, "Hey there!" es un texto literal que aparece directamente en el programa sin necesidad de cálculo (comoVariable)

En Kotlin hay dos tipos de literals de cadenas:

1.Cadena de escape

Los caracteres en una cadena de escape pueden ya haber sido escapados. Por ejemplo

val myString = "Hey there!\n"

Aquí, \n es el carácter de escape, utilizado para insertar un salto de línea en la posición deseada del texto.

A continuación se muestra la lista de caracteres de escape soportados por Kotlin:

  • \t -  Insertar carácter de tabulación

  • \b - Insertar carácter de retroceso

  • \n - Insertar carácter de nueva línea

  • \r - Insertar carácter de retorno de carro

  • \' - Insertar comillas simples

  • \" - Insertar comillas dobles

  • \\\ - Insertar barras invertidas

  • \$ - Insertar caracteres de dólar

2.Cadena original

La cadena original puede contener saltos de línea (no saltos de línea) y cualquier texto. La cadena original está separada por comillas dobles """. Por ejemplo:

fun main(args: Array<String>) {
    val myString = """
    for (character in "Hey!")
        println(character)
"""
    print(myString)
}

Al ejecutar el programa, la salida es:

    for (character in "Hey!")
        println(character)

Puedes usar la función trimMargin() para eliminar los espacios en blanco iniciales de la cadena original. Por ejemplo:

Ejemplo: impresión de la cadena original

fun main(args: Array<String>) {
    println("Salida sin la función trimMargin():")
    val myString = """
    |Kotlin es interesante.
    |Kotlin es patrocinado y desarrollado por JetBrains.
"""
    println(myString)
    println("Salida con la función trimMargin():\n")
    println(myString.trimMargin())
}

Al ejecutar el programa, la salida es:

Salida sin la función trimMargin():
    |Kotlin es interesante.
    |Kotlin es patrocinado y desarrollado por JetBrains.
Salida con la función trimMargin():
Kotlin es interesante.
Kotlin es patrocinado y desarrollado por JetBrains.

Por defecto, la función trimMargin() usa | como prefijo de margen. Pero, puedes cambiarlo pasando una nueva cadena a la función.

Ejemplo: función trimMargin() con parámetros

fun main(args: Array<String>) {
    val myString = """
    !!! Kotlin es interesante.
    !!! Kotlin es patrocinado y desarrollado por JetBrains.
"""
    println(myString.trimMargin("!!! "))
}

Al ejecutar el programa, la salida es:

Kotlin es interesante.
Kotlin es patrocinado y desarrollado por JetBrains.

Plantillas de cadena de Kotlin

Kotlin tiene una excelente función llamada plantilla de cadena, que permite que las cadenas contengan expresiones de plantilla.

Las expresiones de plantilla de cadena de Kotlin comienzan con el símbolo $. Aquí hay algunos ejemplos:

Ejemplo: Plantillas de cadena de Kotlin

fun main(args: Array<String>) {
    val myInt = 5;
    val myString = "myInt = $myInt"
    println(myString)
}

Al ejecutar el programa, la salida es:

myInt = 5

Esto se debe a que la expresión $myInt (expresión que comienza con el símbolo $) dentro de la cadena se evalúa y se conecta a la cadena.

Ejemplo: Plantillas de cadena con cadena original

fun main(args: Array<String>) {
    val a = 5
    val b = 6
    val myString = """
    |${if (a > b) a else b}
"""
    println("El número más grande es: ${myString.trimMargin()}")
}

Al ejecutar el programa, la salida es:

El número más grande es: 6

Varias propiedades y funciones de cadena

Dado que los literales en Kotlin se implementan como instancias de la clase String, puede usar varios métodos y propiedades de esta clase.

  • Atributo length - Devuelve la longitud de la secuencia de caracteres de la cadena.

  • Función compareTo -Compara este objeto de cadena con el objeto especificado. Si el objeto es igual al objeto especificado, devuelve 0.

  • Función get - Devuelve el carácter en la posición de índice especificada. Puede usar el operador de acceso de índice en lugar de la función get, porque el operador de acceso de índice llama internamente a la función get.

  • la función plus - Devuelve una nueva cadena, que se obtiene conectando esta cadena con la cadena pasada a esta función. Puede usar + El operador reemplaza a la función plus, porque+El operador llama a la función plus en segundo plano.

  • Función subSequence - Devuelve una nueva secuencia de caracteres desde los índices de inicio y final especificados.

Ejemplo: Propiedades de cadena y funciones

fun main(args: Array<String>) {
    val s1  = "Hey there!"
    val s2 = "Hey there!"
    var result: String
    println("s1La longitud de la cadena es ${s1.length})
    result = if (s1.compareTo(s2) == 0) "igual" else "diferente"
    println("La cadena s1y2es ${result.})
    // s1.get(2) equivalente a s1[2]
    println("El tercer carácter es ${s1.get(2).toString())
    result = s1.plus(" How are you?") // result = s1 + "How are you?"
    println("result = " + result)
    println("La subcadena es " + s1.subSequence(4, 7}}
}

La salida del programa es:

s1La longitud de la cadena es 10.
La cadena s1y2Son iguales.
El tercer carácter es y.
result = Hey there! How are you?
La subcadena es "the"