Stringhe e caratteri

Una stringa è una sequenza ordinata di caratteri, come ad esempio “hello, world” oppure “albatross”. Le stringhe in Swift sono rappresenytate dal tipo di dato “string”, che rappresenta un insieme di caratteri raccolti e ordinati.

La sintassi per manipolare caratteri e creare stringhe in swift è molto semplice ed ha alcune caratteristiche in comune con il linguaggio C. Per concatenare due o più stringhe si usa semplicemente l’operatore di addizione “+”.

Nonostante questa semplicità di sintassi, il tipo string ha un’implementazione veloce e all’avanguardia. Ogni stringa è composta da caratteri Unicode indipendenti.

Le stringhe possono essere utilizzate anche per inserire costanti, variabili ed espressioni in stringhe più lunghe, in un processo noto come interpolazione di stringhe. Questo rende facile creare valori di stringa personalizzati per la visualizzazione, l’archiviazione e la stampa.

String Literals

È possibile includere valori di stringa predefiniti all’interno del codice come “string literal”. Una stringa letterale è una sequenza fissa di caratteri testuali racchiusi in una coppia di virgolette (“”).

Una stringa letterale può essere utilizzata ad esempio per fornire un valore iniziale per una costante o variabile:

let someString = “Some string literal value”

Si noti che Swift deduce il tipo di stringa per la costante someString, perché viene inizializzato con un valore string literal.

Le String literals possono includere i seguenti caratteri speciali:

The escaped special characters \0 (null character), \\ (backslash), \t (horizontal tab), \n (line feed), \r (carriage return), \” (double quote) and \’ (single quote)
Single-byte Unicode scalars, written as \xnn, where nn is two hexadecimal digits
Two-byte Unicode scalars, written as \unnnn, where nnnn is four hexadecimal digits
Four-byte Unicode scalars, written as \Unnnnnnnn, where nnnnnnnn is eight hexadecimal digits
Il codice d’esempio sottostante spiega l’utilizzo di alcuni di questi caratteri speciali:

let wiseWords = “\”Imagination is more important than knowledge\” – Einstein”
// “Imagination is more important than knowledge” – Einstein
let dollarSign = “\x24” // $, Unicode scalar U+0024
let blackHeart = “\u2665” // ♥, Unicode scalar U+2665
let sparklingHeart = “\U0001F496” //

Inizializzazione di una stringa vuota

Per inizializzare una stringa vuota come punto di partenza per una stringa più lunga, si può assegnare una string literal ad una variabile, oppure inizializzare una nuova istanza di una stringa come segue:

var emptyString = “” // empty string literal
var anotherEmptyString = String() // initializer syntax
// these two strings are both empty, and are equivalent to each other
You can find out whether a String value is empty by checking its Boolean isEmpty property:

if emptyString.isEmpty {
println(“Nothing to see here”)
}
// prints “Nothing to see here”


Modificare una stringa
Si può indicare in che modo una stringa debba essere modificata o debba mutare, assegnandola ad una variabile (nel caso in cui possa essere modificata), oppure ad una costante (nel caso in cui NON possa essere modificata):

var variableString = “Horse”
variableString += ” and carriage”
// variableString is now “Horse and carriage”

let constantString = “Highlander”
constantString += ” and another Highlander”
// this reports a compile-time error – a constant string cannot be modified

 

Le stringhe in swift sono un tipo di valore. Se si crea un nuovo valore stringa, sia che si parta da un valore restituito da una funzione o un metodo, o quando viene assegnato a una costante o variabile. In ogni caso, viene creata una nuova copia del valore stringa esistente e la nuova copia viene passata o assegnata, non si lavora quindi con la versione di origine.

Questo aggiunge uno step di sicurezza in più al codice, in quando il valore prima di essere processato viene copiato in memoria e non può quindi essere modificato durante l’elaborazione stessa.
Lavorare con i Caratteri
Le stringhe in Swift rappresentano un insieme di caratteri disposti in una specifica sequenza. Ogni valore rappresenta un singolo carattere Unicode. È possibile accedere ai singoli valori dei caratteri in una stringa mediante iterazione su tale stringa con un ciclo for-in:

for character in “Dog!

println(character)

}
// D
// o
// g
// !
// (emoticon dog)

Mancano poche pagine alla fine di questo capitolo!

VOLETE ESSERE AGGIORNATI TEMPESTIVAMENTE ALL’USCITA DI UN NUOVO CAPITOLO ? BASTA UN LIKE SULLA NOSTRA PAGINA FACEBOOK!