Partilhar via


Usando a Classe StringBuilder

O objeto String é imutável.Toda vez que você usa um dos métodos na classe System.String, você cria um novo objeto de sequência de caracteres na memória, que requer uma nova alocação de espaço para esse novo objeto.Em situações que você precisa realizar repetidas modificações em uma sequência de caracteres, a sobrecarga associada à criação de um novo objeto String pode custar caro.A classe System.Text.StringBuilder pode ser utilizada quando você desejar modificar uma sequência de caracteres sem criar um novo objeto.Por exemplo, usando-se a classe StringBuilder pode-se melhorar o desempenho da concatenação de várias sequências de caracteres juntas em um loop.

Instanciar um objeto StringBuilder

Você pode criar uma nova instância da classe StringBuilder inicializando sua variável com um dos métodos sobrecarregados do construtor, conforme ilustrado no exemplo a seguir.

Dim MyStringBuilder As New StringBuilder("Hello World!")
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");

Definindo a Capacidade e Comprimento

Embora o StringBuilder é um objeto dinâmico que lhe permite expandir o número de caracteres na seqüência de caracteres que encapsula, você pode especificar um valor para o número máximo de caracteres que pode conter. Esse valor é chamado a capacidade do objeto e não deve ser confundida com o comprimento da seqüência de caracteres que o corrente StringBuilder mantém. Por exemplo, você pode criar uma nova instância do StringBuilderclasse com a seqüência "Olá", que tem um comprimento de 5 e você pode especificar que o objeto tem uma capacidade máxima de 25. Quando você modificar o StringBuilder, ele não realocar dimensionar para si mesma até que a capacidade seja atingida. Quando isso ocorre, o novo espaço é alocado automaticamente e a capacidade é dobrada.Você pode especificar a capacidade do StringBuilder classe usando um dos construtores sobrecarregados. O exemplo a seguir especifica que o objeto MyStringBuilder pode ser expandido para um máximo de 25 espaços.

Dim MyStringBuilder As New StringBuilder("Hello World!", 25) 
StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25);  

Além disso, você pode usar a propriedade de leitura/escrita Capacity para definir o comprimento máximo de seu objeto.O exemplo a seguir usa a propriedade Capacity para definir o comprimento máximo de objeto.

MyStringBuilder.Capacity = 25
MyStringBuilder.Capacity = 25;

O método EnsureCapacity pode ser usado para verificar a capacidade do atual StringBuilder.Se a capacidade for maior do que o valor passado, nenhuma alteração é feita; no entanto, se a capacidade for menor do que o valor passado, a capacidade atual é alterada para coincidir com o valor passado.

A propriedade Length também pode ser exibida ou definida.Se você definir a propriedade Length para um valor que é maior do que a propriedade Capacity, a propriedade Capacity é automaticamente alterada para o mesmo valor que a propriedade Length.Configurar a propriedade Length com um valor que seja menor que o comprimento da sequência de caracteres dentro do StringBuilder atual diminuirá a sequência de caracteres.

Modificando a Sequência de Caracteres do StringBuilder

A tabela a seguir lista os métodos que podem ser usados para modificar o conteúdo de um StringBuilder.

Nome do Método

Uso

StringBuilder.Append

Acrescenta informações ao final do StringBuilder atual.

StringBuilder.AppendFormat

Substitui um especificador de formato passado em uma sequência de caracteres com texto formatado.

StringBuilder.Insert

Insere uma sequência de caracteres ou um objeto no índice especificado do StringBuilder atual.

StringBuilder.Remove

Remove um número determinado de caracteres do StringBuilder atual.

StringBuilder.Replace

Substitui um caractere especificado em um índice especificado.

Append

O método Append pode ser usado para adicionar um representação de sequência de caracteres de um objeto ou texto ao final de uma sequência de caracteres representada pelo StringBuilder atual.O exemplo a seguir inicializa um StringBuilder com "Hello World " e, em seguida, acrescenta algum texto ao final do objeto.Espaço é alocado automaticamente conforme necessário.

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Append(" What a beautiful day.")
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'       Hello World! What a beautiful day.
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World! What a beautiful day.

AppendFormat

O método AppendFormat adiciona texto ao final do StringBuilder, mas também implementa a interface IFormattable e, portanto, aceita as sequências de caracteres de formato padrão descritas na seção formatando seções.Você pode usar esse método para personalizar o formato das variáveis e acrescentar seus valores a um StringBuilder.O exemplo a seguir usa o método AppendFormat para colocar um valor inteiro formatado como um valor de moeda no final de um StringBuilder.

Dim MyInt As Integer = 25
Dim MyStringBuilder As New StringBuilder("Your total is ")
MyStringBuilder.AppendFormat("{0:C} ", MyInt)
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'     Your total is $25.00  
int MyInt = 25; 
StringBuilder MyStringBuilder = new StringBuilder("Your total is ");
MyStringBuilder.AppendFormat("{0:C} ", MyInt);
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Your total is $25.00      

Inserir

O método Insert adiciona uma sequência de caracteres ou objeto em uma posição especificada no StringBuilder atual.O exemplo a seguir utiliza esse método para inserir uma palavra na sexta posição de um StringBuilder.

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Insert(6, "Beautiful ")
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'      Hello Beautiful World!
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello Beautiful World!

Remove

Você pode usar o método Remove para remover um número especificado de caracteres do StringBuilder atual, começando em um índice com base zero especificado.O exemplo a seguir usa o método Remove para diminuir um StringBuilder.

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Remove(5, 7)
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'       Hello
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello

Replace

O método Replace pode ser usado para substituir caracteres contidos no objeto StringBuilder por outro caractere especificado.O exemplo a seguir usa o método Replace para procurar em um objeto StringBuilder todas as ocorrências do caractere de ponto de exclamação (!), e substituí-los pelo caractere ponto de interrogação (?).

Dim MyStringBuilder As New StringBuilder("Hello World!")
MyStringBuilder.Replace("!"c, "?"c)
Console.WriteLine(MyStringBuilder)
' The example displays the following output:
'       Hello World?
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Replace('!', '?');
Console.WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World?

Consulte também

Referência

System.Text.StringBuilder

Outros recursos

Operações Básicas com Sequências de Caracteres