English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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
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! }
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!"
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);
Hello World! Hello C#
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
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!
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: 你好
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#!
StringBuilder é mutável.
A execução de StringBuilder é mais rápida ao anexar múltiplas strings do que a string.
Use StringBuilder quando precisar anexar três ou mais strings.
Adicione ou anexe uma string ao objeto StringBuilder usando o método Append().
Recupere a string do objeto StringBuilder usando o método ToString().