Esercizio - Scoprire Split() e Join()
- 10 minuti
Continuando il lavoro di sviluppo per un'azienda di logistica, si inizia a creare una serie di piccole applicazioni. Tali applicazioni si combinano per acquisire dati dal sistema di un partner, modificarli e passarli a un sistema interno nel formato richiesto.
Per eseguire questa trasformazione dei dati, è necessario accettare i dati in arrivo come stringa, analizzarli in elementi dati più piccoli, quindi modificarli in modo che corrispondano al formato diverso richiesto. Come è possibile analizzare i dati di tipo stringa in elementi dati più piccoli?
Metodi Array dei dati di tipo stringa
Le variabili di tipo string hanno molti metodi predefiniti che convertono una singola stringa in una matrice di stringhe più piccole o in una matrice di caratteri singoli.
Quando si elaborano dati provenienti da altri sistemi informatici, a volte i suddetti sono formattati o codificati in un modo non utile per le proprie esigenze. In questi casi, usare i metodi Array del tipo di dati string per analizzare una stringa in una matrice.
Usare per ToCharArray() invertire un elemento string
Eliminare o usare l'operatore di commento riga
//per impostare come commento tutto il codice degli esercizi precedenti.Aggiornare il codice nell'editor di Visual Studio Code come indicato di seguito:
string value = "abc123"; char[] valueArray = value.ToCharArray();
Ad esempio, il metodo ToCharArray() consente di creare una matrice di char, in cui ogni elemento della matrice rappresenta un carattere della stringa originale.
Invertire, quindi combinare la matrice di caratteri in una nuova stringa
Successivamente si inverte l'ordine dei caratteri nella matrice, quindi si usa il metodo Write per combinarli di nuovo in un singolo output.
Aggiornare il codice nell'editor di Visual Studio Code come indicato di seguito:
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); string result = new string(valueArray); Console.WriteLine(result);L'espressione
new string(valueArray)crea una nuova istanza vuota della classeSystem.String(che corrisponde al tipo di datistringin C#) e passa la matrice di caratteri come costruttore.Nota
Che cos'è la parola chiave
new? In che modo la classeSystem.Stringè correlata al tipo di datistringin C#? Che cos'è un costruttore? Sono tutte domande importanti che purtroppo non rientrano nell'ambito di questo modulo. È consigliabile acquisire familiarità con la libreria di classi .NET, nonché con le classi e gli oggetti in C#, per comprendere appieno il funzionamento di questa espressione di codice. Per il momento, usare un motore di ricerca e la documentazione Microsoft per trovare esempi da usare in situazioni come questa, in cui si vuole eseguire una conversione, ma non si è certi di come farlo usando C#.Scegliere Salva dal menu File di Visual Studio Code.
Il file Program.cs deve essere salvato prima di compilare o eseguire il codice.
Nel pannello EXPLORER, per aprire un terminale nel percorso della cartella TestProject, fare clic con il pulsante destro del mouse su TestProject e quindi scegliere Apri nel terminale integrato.
Verrà aperto un pannello del terminale con un prompt dei comandi che indica che il terminale è aperto al percorso della cartella TestProject.
Al prompt dei comandi del terminale, per eseguire il codice, digitare dotnet run e quindi premere INVIO.
Nota
Se viene visualizzato un messaggio riportante: “Non è stato possibile trovare un progetto da eseguire”, assicurarsi che il prompt dei comandi del terminale visualizzi il percorso previsto della cartella TestProject. Ad esempio:
C:\Users\someuser\Desktop\csharpprojects\TestProject>Verrà visualizzato l'output seguente:
321cba
Combinare tutti i caratteri in una nuova stringa con valori delimitati da virgole usando Join()
In alcuni casi, è necessario separare ogni elemento della matrice di caratteri usando una virgola, come avviene in genere quando si utilizzano dati rappresentati come testo ASCII. A questo scopo, si imposta come commento la riga di codice aggiunta nel passaggio 2 e si userà il metodo String della classe Join(), passando il carattere con cui delimitare ogni segmento (la virgola) e la matrice stessa.
Aggiornare il codice nell'editor di Visual Studio Code come indicato di seguito:
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); // string result = new string(valueArray); string result = String.Join(",", valueArray); Console.WriteLine(result);Salvare il file di codice e quindi usare Visual Studio Code per eseguire il codice.
Verrà visualizzato l'output seguente:
3,2,1,c,b,a
Dividere la nuova stringa con valori delimitati da virgole in una matrice di stringhe usando Split()
Per completare il codice, viene usato il metodo Split(). Questo metodo è progettato per le variabili di tipo string e crea una matrice di stringhe.
Usare l'editor di Visual Studio Code per aggiungere le righe di codice seguenti in fondo al file:
string[] items = result.Split(','); foreach (string item in items) { Console.WriteLine(item); }Esaminare il codice precedente.
Si fornisce la virgola a
.Split()come delimitatore per dividere una stringa lunga in stringhe più piccole. Il codice usa quindi un cicloforeachper eseguire l'iterazione di ogni elemento della matrice di stringhe appena creata,items.Verificare che ora il codice sia come il seguente:
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); // string result = new string(valueArray); string result = String.Join(",", valueArray); Console.WriteLine(result); string[] items = result.Split(','); foreach (string item in items) { Console.WriteLine(item); }Salvare il file di codice e quindi usare Visual Studio Code per eseguire il codice.
Con l'esecuzione del codice precedente si ottiene questo output:
3,2,1,c,b,a 3 2 1 c b aLa matrice
itemscreata constring[] items = result.Split(',');viene usata nel cicloforeache visualizza i singoli caratteri dell'elementostringoriginale contenuto nella variabilevalue.
Riepilogo
Ecco alcuni punti chiave da ricordare quando si lavora con stringhe e matrici:
- Usare metodi come
ToCharArray()eSplit()per creare una matrice - Usare metodi come
Join()o creare una nuova stringa passando una matrice dicharper riconvertire la matrice in una singola stringa