Creazione di array di stringhe
Gli array di stringhe memorizzano parti di testo e forniscono un insieme di funzioni per lavorare con il testo come dati. È possibile indicizzare, rimodellare e concatenare gli array di stringhe esattamente come si farebbe con gli array di qualsiasi altro tipo. È inoltre possibile accedere ai caratteri in una stringa e aggiungere testo alle stringhe utilizzando l'operatore plus. Per riorganizzare le stringhe all'interno di un array di stringhe, utilizzare funzioni quali split, join e sort.
Creazione di array di stringhe da variabili
MATLAB® fornisce array di stringhe per memorizzare frammenti di testo. Ciascun elemento di un array di stringhe contiene una sequenza di caratteri 1 x n.
È possibile creare una stringa utilizzando le virgolette doppie.
str = "Hello, world"str = "Hello, world"
In alternativa, è possibile convertire un vettore di caratteri in una stringa utilizzando la funzione string. chr è un vettore di caratteri 1x17. str è una stringa 1x1 che ha lo stesso testo del vettore di caratteri.
chr = 'Greetings, friend'chr = 'Greetings, friend'
str = string(chr)
str = "Greetings, friend"
Creare un array di stringhe contenente più stringhe utilizzando l'operatore []. str è un array di stringhe 2x3 che contiene sei stringhe.
str = ["Mercury","Gemini","Apollo"; "Skylab","Skylab B","ISS"]
str = 2×3 string
"Mercury" "Gemini" "Apollo"
"Skylab" "Skylab B" "ISS"
Trovare la lunghezza di ciascuna stringa in str con la funzione strlength. Utilizzare strlength anziché length per determinare il numero di caratteri nelle stringhe.
L = strlength(str)
L = 2×3
7 6 6
6 8 3
In alternativa, è possibile convertire un array di celle di vettori di caratteri in un array di stringhe utilizzando la funzione string. MATLAB visualizza le stringhe negli array di stringhe con virgolette doppie e visualizza i vettori di caratteri negli array di celle con virgolette singole.
C = {'Mercury','Venus','Earth'}C = 1×3 cell
{'Mercury'} {'Venus'} {'Earth'}
str = string(C)
str = 1×3 string
"Mercury" "Venus" "Earth"
Oltre ai vettori di caratteri, è possibile convertire valori numerici, di data e ora, di durata e categorici in stringhe utilizzando la funzione string.
Convertire un array numerico in un array di stringhe.
X = [5 10 20 3.1416]; string(X)
ans = 1×4 string
"5" "10" "20" "3.1416"
Convertire un valore data e ora in una stringa.
d = datetime('now');
string(d)ans = "09-Aug-2025 12:02:37"
Inoltre, è possibile leggere il testo dai file in array di stringhe utilizzando le funzioni readtable, textscan e fscanf.
Creazione di stringhe vuote e mancanti
Gli array di stringhe possono contenere sia valori vuoti che valori mancanti. Una stringa vuota contiene zero caratteri. Quando si visualizza una stringa vuota, il risultato è una coppia di virgolette doppie senza alcun contenuto all'interno (""). Per gli array numerici, la stringa mancante è la stringa equivalente a NaN. Indica il punto in cui un array di stringhe presenta valori mancanti. Quando si visualizza una stringa mancante, il risultato è <missing>, senza virgolette.
Creare un array di stringhe vuoto utilizzando la funzione strings. Quando si chiama strings senza argomenti, restituisce una stringa vuota. Si noti che la dimensione di str è 1x1, non 0x0. Tuttavia, str contiene zero caratteri.
str = strings
str = ""
Creare un vettore di caratteri vuoto utilizzando le virgolette singole. Si noti che la dimensione di chr è 0x0.
chr = ''chr = 0×0 empty char array
Creare un array di stringhe in cui ciascun elemento è una stringa vuota. È possibile preallocare un array di stringhe con la funzione strings.
str = strings(2,3)
str = 2×3 string
"" "" ""
"" "" ""
Per creare una stringa mancante, convertire un valore mancante utilizzando la funzione string. La stringa mancante è visualizzata come <missing>.
str = string(missing)
str = <missing>
È possibile creare un array di stringhe contenente sia stringhe vuote che stringhe mancanti. Utilizza la funzione ismissing per determinare quali elementi sono stringhe con valori mancanti. Si noti che la stringa vuota non è una stringa mancante.
str(1) = ""; str(2) = "Gemini"; str(3) = string(missing)
str = 1×3 string
"" "Gemini" <missing>
ismissing(str)
ans = 1×3 logical array
0 0 1
Confrontare una stringa mancante con un'altra stringa. Il risultato è sempre 0 (false), anche quando si confronta una stringa mancante con un'altra stringa mancante.
str = string(missing);
str == "Gemini"ans = logical
0
str == string(missing)
ans = logical
0
Accesso agli elementi di un array di stringhe
Gli array di stringhe supportano operazioni sugli array quali l'indicizzazione e la rimodellazione. Utilizzare l'indicizzazione dell'array per accedere alla prima riga di str e a tutte le colonne.
str = ["Mercury","Gemini","Apollo"; "Skylab","Skylab B","ISS"]; str(1,:)
ans = 1×3 string
"Mercury" "Gemini" "Apollo"
Accedere al secondo elemento nella seconda riga di str.
str(2,2)
ans = "Skylab B"
Assegnare una nuova stringa al di fuori dei limiti di str. MATLAB espande l'array e riempie gli elementi non allocati con valori mancanti.
str(3,4) = "Mir"str = 3×4 string
"Mercury" "Gemini" "Apollo" <missing>
"Skylab" "Skylab B" "ISS" <missing>
<missing> <missing> <missing> "Mir"
Accesso ai caratteri all'interno delle stringhe
Per accedere direttamente ai caratteri, è possibile indicizzare un array di stringhe utilizzando le parentesi graffe {}. Utilizzare le parentesi graffe quando è necessario accedere e modificare i caratteri all'interno di un elemento della stringa. L'indicizzazione con le parentesi graffe garantisce la compatibilità del codice che potrebbe funzionare sia con array di stringhe che con array di celle di vettori di caratteri. Tuttavia, quando possibile, utilizzare le funzioni stringa per lavorare con i caratteri nelle stringhe.
Accedere al secondo elemento nella seconda riga con le parentesi graffe. chr è un vettore di caratteri, non una stringa.
str = ["Mercury","Gemini","Apollo"; "Skylab","Skylab B","ISS"]; chr = str{2,2}
chr = 'Skylab B'
Accedere al vettore di caratteri e restituire i primi tre caratteri.
str{2,2}(1:3)ans = 'Sky'
Individuare i caratteri spazio in una stringa e sostituirli con trattini. Utilizzare la funzione isspace per esaminare i singoli caratteri all'interno della stringa. isspace restituisce un vettore logico che contiene un valore true ovunque sia presente un carattere spazio. Infine, visualizzare l'elemento stringa modificato str(2,2).
TF = isspace(str{2,2})TF = 1×8 logical array
0 0 0 0 0 0 1 0
str{2,2}(TF) = "-";
str(2,2)ans = "Skylab-B"
Si noti che, in questo caso, è inoltre possibile sostituire gli spazi utilizzando la funzione replace, senza ricorrere all'indicizzazione con parentesi graffe.
replace(str(2,2)," ","-")
ans = "Skylab-B"
Concatenazione di stringhe in un array di stringhe
Concatenare le stringhe in un array di stringhe esattamente come si concatenerebbero gli array di qualsiasi altro tipo.
Concatenare due array di stringhe utilizzando le parentesi quadre [].
str1 = ["Mercury","Gemini","Apollo"]; str2 = ["Skylab","Skylab B","ISS"]; str = [str1 str2]
str = 1×6 string
"Mercury" "Gemini" "Apollo" "Skylab" "Skylab B" "ISS"
Trasporre str1 e str2 e concatenarli; quindi, concatenare verticalmente le intestazioni delle colonne sull'array di stringhe. Quando si concatenano vettori di caratteri in un array di stringhe, i vettori di caratteri vengono automaticamente convertiti in stringhe.
str1 = str1'; str2 = str2'; str = [str1 str2]; str = [["Mission:","Station:"] ; str]
str = 4×2 string
"Mission:" "Station:"
"Mercury" "Skylab"
"Gemini" "Skylab B"
"Apollo" "ISS"
Aggiunta di testo alle stringhe
Per aggiungere testo alle stringhe, utilizzare l'operatore plus, +. L'operatore plus aggiunge testo alle stringhe ma non modifica la dimensione di un array di stringhe.
Aggiungere un cognome a un array di nomi. Se si aggiunge un vettore di caratteri alle stringhe, il vettore di caratteri viene automaticamente convertito in una stringa.
names = ["Mary";"John";"Elizabeth";"Paul";"Ann"]; names = names + ' Smith'
names = 5×1 string
"Mary Smith"
"John Smith"
"Elizabeth Smith"
"Paul Smith"
"Ann Smith"
Aggiungere cognomi diversi. È possibile aggiungere testo a un array di stringhe da un array di stringhe o da un array di celle di vettori di caratteri. Quando si aggiungono array non scalari, è necessario che la loro dimensione sia identica.
names = ["Mary";"John";"Elizabeth";"Paul";"Ann"]; lastnames = ["Jones";"Adams";"Young";"Burns";"Spencer"]; names = names + " " + lastnames
names = 5×1 string
"Mary Jones"
"John Adams"
"Elizabeth Young"
"Paul Burns"
"Ann Spencer"
Aggiungere una stringa mancante. Quando si aggiunge una stringa mancante con l'operatore più, l'output è una stringa mancante.
str1 = "Jones";
str2 = string(missing);
str1 + str2ans = <missing>
Divisione, unione e ordinamento di array di stringhe
MATLAB mette a disposizione un ampio insieme di funzioni per lavorare con gli array di stringhe. Ad esempio, è possibile utilizzare le funzioni split, join e sort per riorganizzare l'array di stringhe names in modo che i nomi siano in ordine alfabetico per cognome.
Dividere names sui caratteri spazio. La divisione cambia names da un array di stringhe 5x1 a un array 5x2.
names = ["Mary Jones";"John Adams";"Elizabeth Young";"Paul Burns";"Ann Spencer"]; names = split(names)
names = 5×2 string
"Mary" "Jones"
"John" "Adams"
"Elizabeth" "Young"
"Paul" "Burns"
"Ann" "Spencer"
Scambiare le colonne di names in modo che i cognomi siano nella prima colonna. Aggiungere una virgola dopo ciascun cognome.
names = [names(:,2) names(:,1)];
names(:,1) = names(:,1) + ','names = 5×2 string
"Jones," "Mary"
"Adams," "John"
"Young," "Elizabeth"
"Burns," "Paul"
"Spencer," "Ann"
Unire il cognome e il nome. La funzione join inserisce un carattere spazio tra le stringhe che unisce. Dopo l'unione, names è un array di stringhe 5x1.
names = join(names)
names = 5×1 string
"Jones, Mary"
"Adams, John"
"Young, Elizabeth"
"Burns, Paul"
"Spencer, Ann"
Ordinare gli elementi di names in modo che siano in ordine alfabetico.
names = sort(names)
names = 5×1 string
"Adams, John"
"Burns, Paul"
"Jones, Mary"
"Spencer, Ann"
"Young, Elizabeth"
Vedi anche
string | strings | strlength | ismissing | isspace | plus | split | join | sort