English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

StringBuilder no C#

No C#, o tipo de string é imutável. Isso significa que uma string, uma vez criada, não pode ser alterada. Por exemplo, uma nova string "Hello World!" ocupará espaço na memória do heap. Agora, se alterarmos a string inicial "Hello World!" para "Hello World! from Tutorials Teacher", uma nova string será criada no heap, não alterando o endereço de memória original da string. Se, por substituição, adição, exclusão ou inserção de novas strings no original várias vezes, esse comportamento afetará o desempenho.

Alocação de memória de objeto String

Para resolver esse problema, o C# StringBuilder foi introduzido no namespace System.Text. O StringBuilder não cria um novo objeto na memória, mas expande dinamicamente a memória para conter a string modificada.

Alocação de memória de objeto StringBuilder

Criar um objeto StringBuilder

Você pode criar um objeto StringBuilder usando a palavra-chave new e passar a string inicial para criar a classe. O exemplo a seguir demonstra a criação de um objeto StringBuilder.

using System.Text; //Introdução
            
StringBuilder sb = new StringBuilder(); //Em breve, adicionaremos a string
//ou
StringBuilder sb = new StringBuilder("Hello World!");

Ou, você também pode usar o construtor sobrecarregado para especificar a capacidade máxima do objeto StringBuilder, conforme mostrado a seguir.

StringBuilder sb = new StringBuilder(50); //Em breve, adicionaremos a string
//ou
StringBuilder sb = new StringBuilder("Hello World!", 50);

Portanto, o C# aloca sequencialmente no heap o máximo50 espaços. Assim que alcançar a capacidade especificada, esta capacidade duplica automaticamente. Você também pode usar as propriedades capacity ou length para definir ou recuperar a capacidade do objeto StringBuilder.

Você pode usar um loop for para obter ou definir o caractere em uma posição específica.

StringBuilder sb = new StringBuilder("Hello World!");
for(int i = 0; i < sb.Length; i++{
 Console.Write(sb[i]); // Saída: Hello World!
}

Recuperar string a partir de StringBuilder

StringBuilder não é uma string. Use o método ToString() para recuperar a string do objeto StringBuilder.

StringBuilder sb = new StringBuilder("Hello World!");
var greet = sb.ToString(); //Retorna " Hello World!""Hello World!"

Adicionar ao StringBuilder/Anexar string

Use o método Append() para anexar uma string ao final do objeto StringBuilder atual. Se o StringBuilder ainda não contiver nenhuma string, ele a adicionará. O método AppendLine() adiciona um caractere de nova linha ao final da string.

StringBuilder sb = new StringBuilder();
sb.Append("Hello ");
sb.AppendLine("World!");
sb.AppendLine("Hello C#");
Console.WriteLine(sb);
Saída:
Hello World!
Hello C#

Anexar string formatada ao StringBuilder

Use o método AppendFormat() para formatar uma string de entrada de acordo com um formato específico e então anexá-la.

StringBuilder sbAmout = new StringBuilder("O seu total é ");
sbAmout.AppendFormat("{0:C} ", 25);
Console.WriteLine(sbAmout);//Saída: O seu total é $25.00

Inserção de String no StringBuilder

Use o método Insert() para inserir uma string no índice específico de um objeto StringBuilder.

StringBuilder sb = new StringBuilder("Hello World!");
sb.Insert(5," C#"); 
Console.WriteLine(sb); //Saída: Hello C# World!

Exclusão de string no StringBuilder

Use o método Remove() para excluir uma string a partir de um índice específico até um comprimento específico.

StringBuilder sb = new StringBuilder("Hello World!",50);
sb.Remove(6, 7);
Console.WriteLine(sb); //Saída: 你好

Substituição de string no StringBuilder

Use o método Replace() para substituir todas as ocorrências de uma string específica pela string de substituição especificada.

StringBuilder sb = new StringBuilder("Hello World!");
sb.Replace("World", "C#");
Console.WriteLine(sb);//Saída: Hello C#!
Ponto a lembrar:
  1. StringBuilder é mutável.

  2. A execução de StringBuilder é mais rápida ao anexar múltiplas strings do que a string.

  3. Use StringBuilder quando precisar anexar três ou mais strings.

  4. Adicione ou anexe uma string ao objeto StringBuilder usando o método Append().

  5. Recupere a string do objeto StringBuilder usando o método ToString().