Stringhe. Panoramica.

Stringa è un elenco (o sequenza) di caratteri in un ordine specifico. L'intera sequenza di caratteri viene trattata come un singolo oggetto.

Un carattere è tutto ciò che puoi digitare sulla tastiera con una sola pressione di un tasto (lettera, numero, inverso barra o qualche altro carattere).
Le stringhe possono contenere spazi: "Hello world!".
Una stringa vuota è una stringa che ha 0 caratteri.
C diesis accetta come stringhe tutto ciò che è scritto tra virgolette (""), string è di tipo string.

Importante da ricordare: le stringhe in C# sono immutabili.

Puoi scrivere un nuovo valore in una stringa usando l'operatore di input:
stringa s = Console.ReadLine(); 
Puoi anche semplicemente assegnare un valore stringa alla variabile, ad esempio:< /span >
stringa s = "Do diesis"; 
Puoi definire la lunghezza di una stringa in questo modo:
int n = s.Length;


Confronto di stringhe. Le stringhe possono essere confrontate tra loro proprio come i numeri. Puoi determinare quale delle linee è maggiore, quale è minore.

Quando si confrontano le stringhe, vengono confrontati i codici dei caratteri. Esistono dozzine, se non centinaia, di codifiche dei caratteri. Il modo più semplice per comprendere questo concetto è comprendere uno dei più semplici, ASCII (puoi leggere a riguardo qui< /a>) . 
È necessario capire che nelle codifiche moderne sia le lettere russe che quelle inglesi sono disposte in ordine alfabetico, anche i numeri vanno dal più piccolo al più grande. 
Ad esempio, nella tabella dei codici ASCII, il codice per la lettera inglese 'A' - 65, lettere 'a' - 97, cifra '0' ha il codice 48. Le lettere russe si trovano nella parte estesa della tabella dei codici ASCII (numeri da 128 a 255). Le lettere maiuscole vengono prima (cioè hanno un codice più piccolo) rispetto alle lettere minuscole.
Nella maggior parte delle tabelle di codifica utilizzate, i modelli sono gli stessi, le lettere minuscole sono successive alle lettere maiuscole, i numeri sono precedenti alle lettere e le lettere russe sono successive a quelle inglesi.
Quando si confrontano caratteri o stringhe, C# converte i caratteri nei rispettivi valori ordinali e quindi esegue il confronto da sinistra a destra. 

Ad esempio: "locomotiva" < "steamboat", perché le parole differiscono nella quinta lettera e "in" < "x".

Quando inserisci una stringa, puoi immediatamente dividerla in parti con qualsiasi separatore.
Lo abbiamo già fatto quando abbiamo inserito più variabili numeriche sulla stessa riga. Abbiamo usato il metodo Split() per dividere una stringa in parti. Per impostazione predefinita, separa le stringhe in sottostringhe in base allo spazio.
Usando questo metodo, puoi dividere la stringa in parti, ad esempio per spazi. E scrivi ogni parte della stringa in una variabile separata.
Esempio:
string[] S = Console.ReadLine().Split();
Nell'esempio, quando si immettono due parole separate da uno spazio, la prima parola viene memorizzata nell'elemento zero dell'array s[0], la seconda - nel secondo s[1].

Se devi utilizzare più caratteri come separatori, puoi specificarli separati da virgole:
 
 string[] S = Console.ReadLine().Split(new[] { ' ', '\n' });
 Se ci possono essere più spazi consecutivi nella stringa di input, allora gli spazi possono apparire anche nell'array finale, per escluderlo, è necessario aggiungere un parametro:
string[] S = Console.ReadLine().Split(new[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries);
Se è necessario utilizzare i delimitatori di sottostringa:
string[] S = Console.ReadLine().Split(new[] { "\\r\\n", "\r", "\n", "" }, StringSplitOptions.RemoveEmptyEntries);

Le stringhe possono essere sommate utilizzando il segno "+". Questa operazione è chiamata concatenazione di stringhe o concatenazione
Ad esempio, 
stringa s = "Ciao,";
stringa s1 = "mondo";
Console.WriteLine(s + s1);
Lo schermo visualizzerà la frase "Ciao mondo" (senza virgolette).
 

Riferimento agli indici di riga
Ogni carattere in una stringa ha un numero (chiamato indice) e l'indicizzazione nel linguaggio di programmazione C# inizia da zero. Cioè, il primo carattere ha indice 0, il secondo - 1 e così via.
È possibile accedere ai caratteri stringa tramite indici, indicati tra parentesi quadre s[i].
 
Esempio 
Stringa S H e l l o
Indice S[0] S[1] S[2] S[3] S[4]

Importante!
Quando si accede a un elemento stringa all'indice i, il tipo s[i] non è string ma char. Ciò significa che questa non è una stringa, ma un carattere che corrisponde a un numero intero nella tabella dei codici dei caratteri. In particolare, quando aggiungi due elementi di tipo char , ottieni un intero - l'addizione dei codici di questi elementi. Tuttavia, se visualizzi s[i], verrà visualizzato il carattere i-esimo della stringa, non il numero corrispondente. 

Poiché è possibile accedere a un carattere tramite indice, è possibile utilizzare un ciclo variabile per iterare su tutti i caratteri , che assumerà possibili valori di indice. Ad esempio, un programma che visualizza tutti i codici dei caratteri della stringa s avrà il seguente aspetto:
for (int i = 0; i < s.Length; i++)
{
  Console.WriteLine(s[i]);
    Console.WriteLine(Convert.ToInt32(s[i]));
}

Note sul programma:
1) s.Length trova la lunghezza di una stringa. L'indice del primo carattere è 0 e l'indice dell'ultimo è s.Length-1. La variabile del ciclo i assumerà solo valori in sequenza da 0 a 
s.Length-1;
2) in ogni riga verrà visualizzato prima il simbolo stesso e poi il suo codice, ottenibile tramite il metodo  Convert.ToInt32();

La stessa enumerazione può essere scritta più breve:


foreach (carattere c in s)

    Console.WriteLine(c);
    Console.WriteLine(Convert.ToInt32(c));
}

In questo frammento, l'intestazione del ciclo scorre attraverso tutti i  s caratteri, inserendoli uno per uno nella variabile c.
La particolarità di C# quando si lavora con le stringhe è che le stringhe sono oggetti immutabili. In altre parole, non possiamo modificare i singoli caratteri di una stringa.
Ad esempio, la seguente istruzione non funzionerà:
s[5]=" ";