Sequências de caracteres. Visão geral.

String é uma lista (ou sequência) de caracteres em uma ordem específica. Toda a sequência de caracteres é tratada como um único objeto.

Um caractere é qualquer coisa que você pode digitar no teclado com um único toque de tecla (letra, número, reverso barra ou algum outro caractere).
Strings podem ter espaços: "Hello world!".
Uma string vazia é uma string que tem 0 caracteres.
C sharp aceita como string tudo o que está escrito entre aspas (""), string é do tipo string.

Importante lembrar: strings em C# são imutáveis.

Você pode escrever um novo valor em uma string usando o operador de entrada:
string s = Console.ReadLine(); Você também pode simplesmente atribuir um valor de string à variável, por exemplo:< /extensão > string s = "C sustenido"; Você pode definir o comprimento de uma string assim: int n = s.Length;


Comparação de strings. Strings podem ser comparadas entre si como números. Você pode determinar qual das linhas é maior, qual é menor.

Ao comparar strings, os códigos de caracteres são comparados. Existem dezenas, senão centenas, de codificações de caracteres. A maneira mais fácil de entender esse conceito é entender um dos mais simples, ASCII (você pode ler sobre isso aqui< /a>) . 
É necessário entender que nas codificações modernas as letras russas e inglesas são organizadas em ordem alfabética, os números também vão do menor ao maior. 
Por exemplo, na tabela de códigos ASCII, o código da letra inglesa 'A' - 65, letras 'a' - 97, dígito '0' tem o código 48. As letras russas estão localizadas na parte estendida da tabela de códigos ASCII (números de 128 a 255). Letras maiúsculas vêm antes (ou seja, têm um código menor) do que letras minúsculas.
Na maioria das tabelas de codificação usadas, os padrões são os mesmos, as letras minúsculas são posteriores às maiúsculas, os números são anteriores às letras e as letras russas são posteriores às do inglês.
Ao comparar caracteres ou strings, o C# converte os caracteres em seus respectivos valores ordinais e depois compara da esquerda para a direita. 

Por exemplo: "locomotiva" < "barco a vapor", porque as palavras diferem na quinta letra e "em" < "x".

Ao inserir uma string, você pode dividi-la imediatamente em partes por qualquer separador.
Já fizemos isso antes quando inserimos várias variáveis ​​numéricas na mesma linha. Usamos o método Split() para dividir uma string em partes. Por padrão, ele separa strings em substrings por espaço.
Usando este método, você pode dividir a string em partes, por exemplo, por espaços. E escreva cada parte da string em uma variável separada.
Exemplo: string[] S = Console.ReadLine().Split(); No exemplo, ao inserir duas palavras separadas por um espaço, a primeira palavra é armazenada no elemento zero da matriz s[0], a segunda - no segundo s[1].

Se você precisar usar vários caracteres como separadores, poderá especificá-los separados por vírgulas:
  string[] S = Console.ReadLine().Split(new[] { ' ', '\n' });  Se pode haver vários espaços consecutivos na string de entrada, também podem aparecer espaços na matriz final, para excluir isso, você precisa adicionar um parâmetro: string[] S = Console.ReadLine().Split(new[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries); Se você precisar usar delimitadores de substring: string[] S = Console.ReadLine().Split(new[] { "\\r\\n", "\r", "\n", "" }, StringSplitOptions.RemoveEmptyEntries);

Strings podem ser adicionadas usando o sinal "+". Essa operação é chamada de concatenação de strings ou concatenação
Por exemplo,  string s = "Oi,"; string s1 = "mundo"; Console.WriteLine(s + s1); A tela exibirá a frase "Hello world" (sem aspas).
 

Referenciando índices de linha
Cada caractere em uma string tem um número (chamado índice) e a indexação na linguagem de programação C# começa do zero. Ou seja, o primeiro caractere tem índice 0, o segundo - 1 e assim por diante.
Os caracteres de string podem ser acessados ​​por índices, que são indicados entre colchetes s[i].
 
Exemplo 
String S H e l l o
Índice S[0] S[1] S[2] S[3] S[4]

Importante!
Ao acessar um elemento string no índice i, o tipo s[i] não é string mas sim char. Isso significa que não é uma string, mas um caractere que corresponde a algum número inteiro na tabela de códigos de caracteres. Em particular, quando você adiciona dois elementos do tipo char , obtém um número inteiro - a adição dos códigos desses elementos. No entanto, se você exibir s[i], o caractere i-ésimo da string será exibido, não o número correspondente a ele. 

Como um caractere pode ser acessado por índice, um loop variável pode ser usado para iterar todos os caracteres , que terá valores de índice possíveis. Por exemplo, um programa que exibe todos os códigos de caracteres da string s ficaria assim: for (int i = 0; i < s.Length; i++) {   Console.WriteLine(s[i]); Console.WriteLine(Convert.ToInt32(s[i])); } Notas do programa:
1) s.Length encontra o comprimento de uma string. O índice do primeiro caractere é 0 e o índice do último é s.Length-1. A variável de loop i apenas assumirá valores sequencialmente de 0 a 
s.Length-1;
2) em cada linha, será exibido primeiro o próprio símbolo e depois seu código, que pode ser obtido através do método  Convert.ToInt32();

A mesma enumeração pode ser escrita mais curta:


foreach (char c in s)

    Console.WriteLine(c);
    Console.WriteLine(Convert.ToInt32(c));
}
Neste trecho, o cabeçalho do loop percorre todos os s caracteres, colocando um a um na variável c. A peculiaridade do C# ao trabalhar com strings é que strings são objetos imutáveis. Em outras palavras, não podemos alterar caracteres individuais de uma string.
Por exemplo, a seguinte instrução não funcionará:
s[5]=" ";