StringBuilder – Como Utilizar – C#

Já vimos que o objeto string é imutável, ou seja, não sofre alteração.

 

Mas vira e mexe precisamos fazer repetidas operações com uma string e isso pode se tornar oneroso. Afinal, quando alteramos uma string, uma nova alocação de memória é feita.

 

Para estas situações podemos utilizar outra classe, a StringBuilder. Ela não cria outro objeto em memoria toda vez que é alterada e tem um melhor desempenho nestas ocasiões.

 

 

Criando Uma StringBuilder

 

A classe StringBuilder pode ser encontrada no namespace System.Text.

 

Você pode usar o tipo qualificado completo

 

namespace UtilizandoStringBuilder

 {
     public static class Program
     {
         static void Main()
         {
             System.Text.StringBuilder temp = new System.Text.StringBuilder();
         }
     }
 }

 

ou importar o namespace System.Text, assim:

 

using System.Text;

namespace UtilizandoStringBuilder
{
    public static class Program
    {
        static void Main()
        {
            StringBuilder temp = new StringBuilder();
        }
    }
}

 

Além de usar o construtor, você pode instanciar e inicializar uma stringbuilder ao mesmo tempo utilizando uma sobrecarga do construtor:

 

StringBuilder tmpStringBuilder = new StringBuilder("Frase Exemplo");

 

 

Capacidade e Comprimento

 

Você pode especificar um valor para o número máximo de caracteres que uma StringBuilder pode conter. Este número é a capacidade do objeto.

 

OBS: Não confunda com o tamanho do seu conteúdo… Este valor é o número máximo de caracteres que você pode colocar dentro da StringBuilder. Para saber a quantidade de texto dentro dele, utilize a propriedade Length.

 

Criando uma instância de StringBuilder com a frase “Frase Exemplo” e especificar uma capacidade de 50 caracteres:

 

StringBuilder tmpStringBuilder = new StringBuilder("Frase Exemplo", 50);

 

Uma outra maneira de você fazer a mesma coisa é utilizar a propriedade Capacity:

 

StringBuilder tmpStringBuilder = new StringBuilder("Frase Exemplo");
tmpStringBuilder.Capacity = 50;

 

Neste exemplo, enquanto o conteúdo da StringBuilder for menor que 50 não haverá realocação de espaço na memória.

 

 

Modificando O Conteúdo De Uma StringBuilder

 

Append – Acrescentando

 

O método Append inclui informações no final da StringBuilder:

 

using System;
using System.Text;

namespace ExemploAppend
{
    public static class Program
    {
        static void Main()
        {
            StringBuilder temp = new StringBuilder("Isto é um exemplo.");
            temp.Append("Isto é outro exemplo.");
            Console.WriteLine(temp.ToString());
        }
    }
}

 

 

AppendFormat – Acrescentando Formatado

 

O AppendFormat inclui informações no final da StringBuilder, formatando o texto da mesma forma que o String.Format():

 

using System;
using System.Text;

namespace ExemploAppendFormat
{
    public static class Program
    {
        static void Main()
        {
            StringBuilder temp = new StringBuilder("Isto é um exemplo.");
            temp.AppendFormat(" Hoje é {0:dd/MM/yyyy}", DateTime.Now);
            Console.WriteLine(temp.ToString());
        }
    }
}

 

 

Insert – Incluindo

 

Inclui informação na StringBuilder. Você deve especificar a posição onde esta inclusão deve ser feita.

 

using System;
using System.Text;

namespace ExemploInsert
{
    public static class Program
    {
        static void Main()
        {
            StringBuilder temp = new StringBuilder("Isto é um exemplo.");
            temp.Insert(4, " Texto a incluir");
            Console.WriteLine(temp.ToString());
        }
    }
}

 

 

Remove – Removendo

 

Remove parte da informação de uma StringBuidler. Você deve especificar a posição e quantas posições devem ser removidas.

 

using System;
using System.Text;

namespace ExemploRemove
{
    public static class Program
    {
        static void Main()
        {
            StringBuilder temp = new StringBuilder("Isto é um exemplo.");
            temp.Remove(4, 2);
            Console.WriteLine(temp.ToString());
        }
    }
}

 

 

Replace – Substituindo

 

Substitui parte da informação dentro da StringBuilder por outra. Você deve especificar qual texto deve ser substituído e qual texto deve ser colocado no lugar.

 

O exemplo abaixo substitui o caractere “m” por um espaço em branco.

 

using System;
using System.Text;

namespace ExemploReplace
{
    public static class Program
    {
        static void Main()
        {
            StringBuilder temp = new StringBuilder("Isto é um exemplo.");
            temp.Replace("m", " ");
            Console.WriteLine(temp.ToString());
        }
    }
}

 

 

Convertendo Uma StringBuilder Em Uma String

 

Para utilizar o conteúdo do StringBuilder em um método que recebe uma string como parâmetro – para exibir na tela, por exemplo, devemos antes converte-lo em uma String através do método ToString da StringBuilder.

 

Veja um exemplo abaixo:

 

using System.Text;

namespace ConvertendoStringBuilder
{
    public static class Program
    {
        static void Main()
        {
            StringBuilder temp = new StringBuilder();
            temp.Append(“Isto é um exemplo.”);

            Console.WriteLine(temp.ToString());
        }
    }
}

 

 

Palavras Finais

 

Quando manipulamos muito texto em nossos programas podemos ter problemas de performance por conta de uma particularidade do objeto String.

 

A String é “recriada” toda vez que há alguma alteração em seu conteúdo.

 

Desta forma, podemos utilizar o objeto StringBuilder ao invés da String. Ao contrário da StringBuilder, que é realocada somente quando o conteúdo dela ultrapassa a sua capacidade máxima. O objeto StringBuilder foi criado justamente para ser utilizado nestes casos e oferece uma melhora no desempenho significativa.

 

Porém antes de utilizarmos qualquer método que recebe uma String como parâmetro, devemos converte-lo em String através do método ToString().

 

Mas como saber quando utilizar String ou StringBuilder?

 

Isso será assunto para outro post!

 

E para receber um aviso quando os próximos artigos forem publicados, se cadastre na Grupo VIP App Dev!

Comece pelo e-book GRATUITO

5 Passos Para Ser Um App Dev

Se você não sabe por onde começar, este e-book te mostra os passos para ser um desenvolvedor de aplicativos de sucesso.
100% livre de spam.

Para enviar seu comentário, preencha os campos abaixo:

Deixe uma resposta

*

Seja o primeiro a comentar!