Corso di Raku / Fondamenti / Stringhe

Escape dei caratteri speciali

Immagina di voler stampare un’etichetta del prezzo e di conservare sia il nome del prodotto che il suo prezzo in variabili scalari?

my $product = 'Electricity';
my $price = 3.14;

Come stampi l’etichetta se il prezzo deve essere in dollari? L’output previsto è: Electricity costs $3.14. Un segno di dollaro nelle stringhe tra doppi apici è un indicatore di una variabile da interpolare. Per stampare il carattere $ stesso, devi eseguirne l’escape:

say "$product costs \$$price";

Ovviamente, puoi usare la concatenazione di stringhe ed evitare l’escape di $:

say $product ~ ' costs $' ~ $price;

Questa variante stampa esattamente la stessa stringa, ma l’interpolazione sembra più naturale e facile da leggere. Nota che il carattere $ non è stato né interpolato né eseguito l’escape in una stringa tra apici singoli: ' costs $'. Questa è la principale differenza. I caratteri speciali tra apici singoli appaiono così come sono.

Ecco alcuni altri caratteri speciali che hanno un significato speciale nelle stringhe tra doppi apici:

\$ Segno di dollaro
\n Nuova riga
\r Ritorno a capo
\t Tabulazione orizzontale
\" Doppio apice
\\ Barra rovesciata

Il modo in cui citi la stringa definisce come Raku tratta i caratteri speciali. Considera questi due esempi:

say 'One\nTwo';
say "Three\nFour";

Se esegui questo programma, vedrai che la prima stringa appare così com’è su una singola riga. La seconda stringa è stata divisa in due parti:

One\nTwo
Three
Four

Tra doppi apici, una sequenza speciale \n è stata elaborata come un carattere di nuova riga, mentre in una stringa tra apici singoli era una normale sequenza di due caratteri: \ e n.

C’è un’eccezione interessante per ' e \. Tra apici singoli, puoi eseguire l’escape di un apice singolo prefissandolo con un altro \:

say '\''; # '

Anche una barra rovesciata deve essere eseguita l’escape se segue un apice singolo:

say 'a\b\c\\'; # a\b\c\

Pratica

Completa il quiz che copre i contenuti di questo argomento.

Stringhe / Interpolazione del codice   |   Stringhe / Lunghezza della stringa


💪 Or jump directly to the exercises to this section.

Questa pagina è tradotta automaticamente con ChatGPT 4o. Testo originale in inglese.

Traduzioni di questa pagina: EnglishDeutschEspañolItalianoLatviešuNederlandsБългарскиРусскийУкраїнська