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; span>
 
            
            
                  
            
             
                    
            
                 
      
                  
           | 
	
		
 
     
              
              
                  
                       
            
                
          
            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 S plit() 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]=" "; 
            
            
                  
            
             
                    
            
                 
      
                  
           |