Chaînes. Présentation.

String est une liste (ou une séquence) de caractères dans un ordre spécifique. La séquence entière de caractères est traitée comme un seul objet.

Un caractère est tout ce que vous pouvez taper sur le clavier avec une seule touche (lettre, chiffre, sens inverse barre oblique ou un autre caractère).
Les chaînes peuvent avoir des espaces : "Hello world !".
Une chaîne vide est une chaîne qui contient 0 caractères.
C sharp accepte comme chaînes tout ce qui est écrit entre guillemets (""), chaîne est de type chaîne.

Important à retenir : les chaînes en C# sont immuables.

Vous pouvez écrire une nouvelle valeur dans une chaîne à l'aide de l'opérateur d'entrée :
chaîne s = Console.ReadLine(); Vous pouvez aussi simplement attribuer une valeur de chaîne à la variable, par exemple :< /étendue > chaîne s = "Do dièse"; Vous pouvez définir la longueur d'une chaîne comme ceci : int n = s.Length ;


Comparaison de chaînes. Les chaînes peuvent être comparées entre elles comme des nombres. Vous pouvez déterminer laquelle des lignes est la plus grande, laquelle est la plus petite.

Lors de la comparaison de chaînes, les codes de caractères sont comparés. Il existe des dizaines, voire des centaines, d'encodages de caractères. La façon la plus simple de comprendre ce concept est de comprendre l'un des plus simples, ASCII (vous pouvez lire à ce sujet ici< /a>) . 
Il est nécessaire de comprendre que dans les encodages modernes, les lettres russes et anglaises sont classées par ordre alphabétique, les chiffres vont également du plus petit au plus grand. 
Par exemple, dans la table des codes ASCII, le code de la lettre anglaise 'A' - 65, lettres 'a' - 97, chiffre '0' a le code 48. Les lettres russes sont situées dans la partie étendue de la table des codes ASCII (numéros de 128 à 255). Les majuscules viennent avant (c'est-à-dire qu'elles ont un code plus petit) que les minuscules.
Dans la plupart des tables d'encodage utilisées, les modèles sont les mêmes, les lettres minuscules sont postérieures aux lettres majuscules, les chiffres sont antérieurs aux lettres et les lettres russes postérieures aux lettres anglaises.
Lors de la comparaison de caractères ou de chaînes, C# convertit les caractères en leurs valeurs ordinales respectives, puis compare de gauche à droite. 

Par exemple : "locomotive" < "steamboat", car les mots diffèrent par la cinquième lettre et "in" < "x".

Lorsque vous saisissez une chaîne, vous pouvez immédiatement la diviser en parties par n'importe quel séparateur.
Nous avons déjà fait cela auparavant lorsque nous avons saisi plusieurs variables numériques sur la même ligne. Nous avons utilisé la méthode Split() pour diviser une chaîne en plusieurs parties. Par défaut, il sépare les chaînes en sous-chaînes par un espace.
En utilisant cette méthode, vous pouvez diviser la chaîne en parties, par exemple, par des espaces. Et écrivez chaque partie de la chaîne dans une variable distincte.
Exemple: chaîne[] S = Console.ReadLine().Split(); Dans l'exemple, lors de la saisie de deux mots séparés par un espace, le premier mot est stocké dans l'élément zéro du tableau s[0], le second - dans le second s[1].

Si vous avez besoin d'utiliser plusieurs caractères comme séparateurs, vous pouvez les spécifier en les séparant par des virgules :
  chaîne[] S = Console.ReadLine().Split(new[] { ' ', '\n' });  S'il peut y avoir plusieurs espaces consécutifs dans la chaîne d'entrée, des espaces peuvent également apparaître dans le tableau final. Pour exclure cela, vous devez ajouter un paramètre : chaîne[] S = Console.ReadLine().Split(new[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries); Si vous devez utiliser des délimiteurs de sous-chaîne : chaîne[] S = Console.ReadLine().Split(new[] { "\\r\\n", "\r", "\n", "" }, StringSplitOptions.RemoveEmptyEntries);

Les chaînes peuvent être additionnées à l'aide du signe "+". Cette opération est appelée concaténation de chaînes ou concaténation
Par exemple,  chaîne s = "Salut," ; chaîne s1 = "monde" ; Console.WriteLine(s + s1); L'écran affichera la phrase "Hello world" (sans les guillemets).
 

Référencer les index de lignes
Chaque caractère d'une chaîne a un nombre (appelé index), et l'indexation dans le langage de programmation C# commence à zéro. Autrement dit, le premier caractère a l'index 0, le second - 1, et ainsi de suite.
Les caractères de chaîne sont accessibles par des index, qui sont indiqués entre crochets s[i].
 
Exemple 
Chaîne S H e l l o
Index S[0] S[1] S[2] S[3] S[4]

Important !
Lors de l'accès à un élément de chaîne à l'index i, le type s[i] n'est pas string mais char. Cela signifie qu'il ne s'agit pas d'une chaîne, mais d'un caractère qui correspond à un nombre entier dans la table des codes de caractères. En particulier, lorsque vous additionnez deux éléments de type char , vous obtenez un entier - l'addition des codes de ces éléments. Cependant, si vous affichez s[i], le i-ième caractère de la chaîne sera affiché, et non le numéro qui lui correspond. 

Parce qu'un caractère est accessible par index, une boucle variable peut être utilisée pour itérer sur tous les caractères , qui prendra les valeurs d'index possibles. Par exemple, un programme qui affiche tous les codes de caractères de la chaîne s ressemblerait à ceci : for (int i = 0 ; i < s.Length ; i++) {   Console.WriteLine(s[i]); Console.WriteLine(Convert.ToInt32(s[i])); } Notes de programme :
1) s.Length trouve la longueur d'une chaîne. L'index du premier caractère est 0 et l'index du dernier est s.Length-1. La variable de boucle i prendra simplement des valeurs séquentiellement de 0 à 
s.Length-1 ;
2) dans chaque ligne, le symbole lui-même sera affiché en premier, puis son code, qui peut être obtenu via la méthode  Convert.ToInt32();

La même énumération peut être écrite plus courte :


foreach (car c in s)

    Console.WriteLine(c);
    Console.WriteLine(Convert.ToInt32(c));
}
Dans cet extrait, l'en-tête de la boucle parcourt tous les s caractères, en les plaçant un par un dans la variable c. La particularité de C# lorsque l'on travaille avec des chaînes est que les chaînes sont des objets immuables. En d'autres termes, nous ne pouvons pas modifier les caractères individuels d'une chaîne.
Par exemple, l'instruction suivante ne fonctionnera pas :
s[5]=" ";