Modelli di stringa Kotlin

1. Panoramica

In questo tutorial, spiegheremo cosa sono i modelli String di Kotlin e come usarli.

Per familiarizzare con altre funzionalità e sapere come utilizzare Kotlin, dai un'occhiata a uno dei nostri tutorial su Kotlin.

2. Archi in Kotlin

Come in Java, le stringhe in Kotlin sono immutabili. Ciò significa che non abbiamo mezzi per modificare una stringa una volta creata. Tuttavia, possiamo derivare un'altra stringa da una data.

Kotlin ha arricchito la classe Java String con funzionalità aggiuntive.

Ad esempio, il metodo padEnd () ci consente di formattare una stringa, in modo che l'espressione:

"Hello".padEnd(10, '!')

Che produce una nuova stringa "Hello !!!!!" .

3. Modelli di stringa

I modelli di stringa sono valori letterali di stringa che contengono espressioni incorporate.

Ad esempio, questo codice in Java:

String message = "n = " + n;

In Kotlin è solo:

val message = "n = $n"

Qualsiasi espressione Kotlin valida può essere utilizzata in un modello String :

val message = "n + 1 = ${n + 1}"

A differenza di Java, molti costrutti di Kotlin (ma certamente non tutti) sono espressioni .

Pertanto, un modello String può contenere anche logica:

val message = "$n is ${if(n > 0) "positive" else "not positive"} 

Notare che all'interno delle parentesi graffe c'è un'espressione Kotlin valida. Questo è un motivo per cui non sfuggiamo alle virgolette doppie annidate.

I modelli di stringa vengono risolti valutando l'espressione e invocando un metodo toString () sul risultato della valutazione.

I modelli di stringa possono essere annidati:

val message = "$n is ${if (n > 0) "positive" else if (n < 0) "negative and ${if (n % 2 == 0) "even" else "odd"}" else "zero"}"

Il parser del modello String inizia a risolverlo dal modello più annidato, lo valuta e richiama un metodo toString () su di esso.

Sebbene i modelli String possano essere nidificati, è una buona idea averli il più semplici possibile. Questo non è affatto difficile perché Kotlin ci fornisce molti strumenti utili.

E se volessimo utilizzare un segno di dollaro grezzo e non come parte di un modello String ?

Quindi gli sfuggiamo inserendo una barra rovesciata davanti:

val message = "n = \$n"

Ciò che segue il segno del dollaro diventa una normale stringa : non viene più valutato e viene interpretato così com'è.

4. Corde grezze

In Kotlin, inoltre, abbiamo stringhe grezze con virgolette triple che possono contenere caratteri speciali senza la necessità di sfuggirli.

La stringa risultante è contenuta tra due occorrenze consecutive non sovrapposte di segni di virgolette triple doppie .

Ad esempio, in Java, per creare correttamente una stringa contenente un percorso di file in stile Windows a una risorsa situata in C: \ Repository \ read.me, dovremmo definirla in questo modo:

String path = "C:\\Repository\\read.me"

In Kotlin, possiamo usare la notazione con virgolette triple per ottenere lo stesso risultato:

val path = """C:\Repository\read.me"""

Possiamo usare questa notazione per creare una stringa multilinea :

val receipt = """Item 1: $1.00 Item 2: $0.50"""

Che crea una stringa che si estende esattamente su due linee. Se preferiamo questa rientranza:

val receipt = """Item 1: $1.00 >Item 2: $0.50""".trimMargin(">")

Usiamo un metodo trimMargin () che elimina eventuali spazi bianchi dall'inizio di ogni riga fino alla prima occorrenza del prefisso del margine ( > nell'esempio sopra).

Le stringhe tra virgolette non supportano alcuna sequenza di escape . Significa che se abbiamo scritto

val receipt = """Item 1: $1.00\nItem 2: $0.50"""

per ottenere una stringa di due righe , avremmo una singola riga contenente i caratteri \ n invece dell'interruzione di riga prevista.

Tuttavia, le stringhe con virgolette triple supportano i modelli.

Significa che qualsiasi sequenza che inizia con il simbolo del dollaro viene risolta in una stringa nel modo descritto nella sezione precedente. Possiamo usare questo fatto per far funzionare i caratteri di escape:

val receipt = """Item 1: $1.00${"\n"}Item 2: $0.50"""

5. conclusione

In questo articolo, abbiamo considerato una caratteristica del linguaggio Kotlin che è assente nei modelli Java: i modelli String . Abbiamo illustrato il loro utilizzo in caso di stringhe normali e multilinea .

Puoi trovare tutti i frammenti di codice menzionati qui nel nostro repository su GitHub.