# Tema 4. Strings en Kotlin

{% content-ref url="/pages/kRd3nU3gLQvS2SF7uOSc" %}
[Tema 2. Variables y Tipos de Datos](/apuntes-kotlin/curso-basico/tema-2.-variables-y-tipos-de-datos.md)
{% endcontent-ref %}

## STRINGS

{% hint style="info" %}
La información que se encuentra en éste primer apartado tiene que ver con Programación Orientada a Objetos. Si no lo entiende no se preocupe, no es indispensable a estas alturas.

Se explica a nivel usuario en el Tema 2. Aquí se explica el por qué.
{% endhint %}

Las strings son objetos de la clase String:

```kotlin
class String : Comparable<String>, CharSequence
```

El hecho de que implementen una interfaz "CharSequence" permite que podamos acceder a cada unos de sus caracteres como datos del tipo char utilizando la función get() o su operador equivalente, los corchetes:

```kotlin
val texto = "hola"

println(texto.get(2)) // l
println(texto[2])     // l
```

## CONCATENAR STRINGS

Igual que en otros lenguajes de programación, los Strings se pueden concatenar utilizando el operador aritmético "`+`".&#x20;

```kotlin
val s = "hola"
val n = "programador"
println(s + " " + n)
```

{% hint style="danger" %}
Sin embargo, al contrario que en otros lenguajes de programación como Python, no se puede repetir una String utilizando el operador aritmético "`*`". Esto dará error.
{% endhint %}

## STRINGS CON MÚLTIPLES LINEAS

En ocasiones puede ser útil crear Strings que ocupen varias líneas y se lean exactamente como están (raw).  Para ello utilizamos tres comillas dobles seguidas:

```kotlin
val texto = """ 
    hola, esto es una prueba
    una prueba muy interesante
    de texto multilinea.
"""
println(texto)

/* Resultado
    hola, esto es una prueba
    una prueba muy interesante
    de texto multilinea.
*/
```

Para evitar que el texto quede como en el ejemplo, se utiliza la función `trimIndent()`.

```kotlin
val texto = """ 
    hola, esto es una prueba
    una prueba muy interesante
    de texto multilinea.
""".trimIndent()
println(texto)

/* Resultado
 hola, esto es una prueba
 una prueba muy interesante
 de texto multilinea.
*/
```

## PLANTILLAS DE STRING

Hay ocasiones en las que queremos introducir el valor de una variable en una String. Para eso utilizamos las plantillas. Hay dos opciones:

* `$id`, donde `id` es un identificador simple.
* `${e}`, donde `e` es una expresión valida en Kotlin.

```kotlin
// Ejemplo de utilizar el valor de una variable sin expresiones.
val x = "56"    // String
val texto = "tengo $x años"

val x = 56    // Int
val texto = "tengo ${x.toString()} años"
```

{% hint style="info" %}
Ésta es la [**forma idiomática**](https://kotlinlang.org/docs/idioms.html#string-interpolation) (por convenio) de incluir el valor de una variable o sentencia en nuestras cadenas de texto.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ricardev.gitbook.io/apuntes-kotlin/curso-basico/tema-4.-strings-en-kotlin.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
