Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Sugestão
Este artigo faz parte da secção Fundamentos para programadores que já conhecem pelo menos uma linguagem de programação e estão a aprender C#. Se és novo na programação, começa primeiro pelos tutoriais para começar .
Vem de outra língua? Tal como Java e JavaScript, as strings C# são imutáveis: métodos como Replace e Trim retornam uma nova string em vez de alterar a original. Os padrões aqui são semelhantes aos métodos String nessas línguas.
Um C# string é imutável, o que significa que o seu conteúdo nunca muda depois de o criar. Cada método que parece modificar uma cadeia retorna um novo string com as alterações, mantendo o original intacto. Os exemplos deste artigo armazenam cada resultado numa nova variável para que possas ver tanto a fonte como o valor modificado.
Escolha a técnica que corresponda ao seu cenário: substituir texto conhecido, recortar espaços em branco, remover um intervalo de caracteres, substituir texto que corresponda a um padrão ou editar caracteres individuais.
Substituir texto conhecido
O String.Replace método substitui cada ocorrência de uma cadeia por outra e devolve o resultado como uma nova cadeia:
string source = "The mountains are behind the clouds today.";
// Replace returns a new string; the original is unchanged.
string updated = source.Replace("mountains", "peaks");
Console.WriteLine(source);
// => The mountains are behind the clouds today.
Console.WriteLine(updated);
// => The peaks are behind the clouds today.
A cadeia original mantém-se inalterada, o que demonstra imutabilidade: Replace cria uma nova sequência com a substituição.
Replace Também tem uma sobrecarga que troca de personagens individuais. O exemplo seguinte substitui cada espaço por um sublinhado:
string source = "The mountains are behind the clouds today.";
// Replace every occurrence of one character with another.
string updated = source.Replace(' ', '_');
Console.WriteLine(updated);
// => The_mountains_are_behind_the_clouds_today.
Ambas as sobrecargas substituem todas as correspondências na cadeia, não apenas a primeira. Quer passes um único carácter ou uma cadeia, Replace substitui todas as ocorrências numa só chamada.
Cortar espaço em branco
Utilize String.Trim, String.TrimStart e String.TrimEnd para remover espaços em branco no início ou no fim. Cada método devolve uma nova cadeia:
string source = " I'm wider than I need to be. ";
// Each method returns a new string with whitespace removed.
Console.WriteLine($"<{source.Trim()}>");
// => <I'm wider than I need to be.>
Console.WriteLine($"<{source.TrimStart()}>");
// => <I'm wider than I need to be. >
Console.WriteLine($"<{source.TrimEnd()}>");
// => < I'm wider than I need to be.>
Remover um intervalo de caracteres
O String.Remove método elimina vários caracteres começando num índice. Combine-o com String.IndexOf para localizar o texto a remover:
string source = "Many mountains are behind many clouds today.";
string toRemove = "many ";
// Find the text, then remove that span by index and length.
int index = source.IndexOf(toRemove);
string result = index >= 0
? source.Remove(index, toRemove.Length)
: source;
Console.WriteLine(result);
// => Many mountains are behind clouds today.
Substituir o texto que corresponde a um padrão
Quando precisar de substituir texto que segue um padrão em vez de uma cadeia exata, use expressões regulares. O Regex.Replace método aceita uma função que calcula cada substituição, para que possa preservar detalhes como a capitalização original. O padrão the\s corresponde a "the" seguido de um carácter de espaço em branco, o que impede que coincida com "there":
string source = "The mountains are still there behind the clouds today.";
// Replace "the" or "The" followed by whitespace, preserving the original case.
// The \s in the pattern keeps "there" from matching.
string result = Regex.Replace(
source,
"""the\s""",
match => char.IsUpper(match.Value[0]) ? "Many " : "many ",
RegexOptions.IgnoreCase);
Console.WriteLine(result);
// => Many mountains are still there behind many clouds today.
Para pesquisa por padrões em vez de substituição, consulte cadeias de pesquisa em C#. Para a sintaxe de expressões regulares, veja Referência rápida de linguagem de expressões regulares.
Modificar personagens individuais
Para alterar caracteres por posição, copie a cadeia para um Span<T> de caracteres, modifique o intervalo e depois constrói uma nova cadeia a partir dela. O exemplo seguinte encontra a palavra "raposa" e substitui-a por "gato":
string phrase = "The quick brown fox jumps over the fence.";
// A string is immutable, so copy it into a Span<char> to edit in place.
Span<char> characters = stackalloc char[phrase.Length];
phrase.CopyTo(characters);
int index = phrase.IndexOf("fox");
if (index != -1)
{
characters[index] = 'c';
characters[index + 1] = 'a';
characters[index + 2] = 't';
}
// Build a new string from the modified characters.
string updated = new string(characters);
Console.WriteLine(updated);
// => The quick brown cat jumps over the fence.
Para cenários de alto desempenho que evitam alocações intermédias, o tempo de execução fornece APIs de nível inferior como String.Create. Essas técnicas são avançadas; Para código do dia a dia, os métodos deste artigo são a escolha certa.