Passa al contenuto principale

7. Strings (Stringhe)

La rappresentazione delle stringhe è simile alle convenzioni utilizzate nella famiglia di linguaggi di programmazione C. Una stringa inizia e termina con virgolette. Tutti i caratteri Unicode possono essere inseriti tra virgolette, ad eccezione dei caratteri che devono essere escapati: virgolette, barra rovesciata e caratteri di controllo (U+0000 a U+001F).

Qualsiasi carattere può essere escapato. Se il carattere si trova nel piano multilingue di base (BMP) (U+0000 a U+FFFF), può essere rappresentato come una sequenza di sei caratteri: una barra rovesciata, seguita dalla lettera minuscola u, seguita da quattro cifre esadecimali che codificano il punto di codice del carattere. Le lettere esadecimali da A a F possono essere maiuscole o minuscole. Così, per esempio, una stringa contenente solo un singolo carattere barra rovesciata può essere rappresentata come "\u005C".

In alternativa, esistono rappresentazioni di escape a sequenza di due caratteri per alcuni caratteri comunemente usati. Così, per esempio, una stringa contenente solo un singolo carattere barra rovesciata può essere rappresentata in modo più compatto come "\\".

Per escapare un carattere esteso che non si trova nel piano multilingue di base, il carattere è rappresentato come una sequenza di 12 caratteri, che codifica una coppia surrogata UTF-16. Così, per esempio, una stringa contenente solo il carattere chiave di violino (U+1D11E) può essere rappresentata come "\uD834\uDD1E".

string = quotation-mark *char quotation-mark

char = unescaped /
escape (
%x22 / ; " Virgolette U+0022
%x5C / ; \ Barra rovesciata U+005C
%x2F / ; / Barra U+002F
%x62 / ; b Backspace U+0008
%x66 / ; f Form Feed U+000C
%x6E / ; n Nuova riga U+000A
%x72 / ; r Ritorno carrello U+000D
%x74 / ; t Tabulazione U+0009
%x75 4HEXDIG ) ; uXXXX U+XXXX

escape = %x5C ; \

quotation-mark = %x22 ; "

unescaped = %x20-21 / %x23-5B / %x5D-10FFFF