Partilhar via


Usando a Classe StringBuilder

O String objeto é imutável. Sempre que você use um dos métodos na System.String classe, você cria um novo objeto de seqüência de caracteres na memória, que requer uma nova alocação de espaço para esse novo objeto. Em situações onde você precisa realizar modificações repetidas uma seqüência de caracteres, a sobrecarga associada à criação uma nova String o objeto pode ser 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 o StringBuilder classe pode melhorar o desempenho ao concatenar várias cadeias de caracteres juntos em um loop.

Instanciar um objeto StringBuilder

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

Dim MyStringBuilder As New StringBuilder("Hello World!")
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
StringBuilder^ MyStringBuilder = gcnew 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 ele encapsula, você pode especificar um valor para o número máximo de caracteres que pode manter. Esse valor é chamado a capacidade do objeto e não deve ser confundida com o comprimento da seqüência de caracteres que o atual StringBuilder suspensões. Por exemplo, você pode criar uma nova instância de StringBuilder classe com a seqüência de caracteres "Hello", que tem um comprimento de 5 e você pode especificar que o objeto tem uma capacidade máxima de 25. Quando você modifica o StringBuilder, ele não realocar tamanho para si até que a capacidade é 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);  
StringBuilder^ MyStringBuilder = gcnew 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;
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.
StringBuilder^ MyStringBuilder = gcnew 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 StringBuilder.AppendFormat método adiciona texto ao final da StringBuilder objeto. Ele suporta o recurso de formatação de composição (para obter mais informações, consulte Formatação Composta) chamando o IFormattable a implementação de um ou mais objetos a ser formatado. Portanto, ele aceita as seqüências de caracteres de formato padrão para valores numéricos, a data e a hora e a enumeração, as seqüências de caracteres de formato personalizado para numeric e valores de data e hora e as seqüências de caracteres de formato definidas para tipos personalizados. (Para obter informações sobre formatação, consulte Tipos de Formatação.) Você pode usar esse método para personalizar o formato das variáveis e acrescentar a esses valores para um StringBuilder. O exemplo a seguir usa a AppendFormat método para colocar um valor inteiro é formatado como um valor de moeda no final de uma StringBuilder objeto.

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      
int MyInt = 25;
StringBuilder^ MyStringBuilder = gcnew 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 Insert método adiciona uma seqüência de caracteres ou um objeto para uma posição especificada na atual StringBuilder objeto. O exemplo a seguir usa esse método para inserir uma palavra para a sexta posição de um StringBuilder objeto.

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!
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Insert(6,"Beautiful ");
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello Beautiful World!

Remove

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

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
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Remove(5,7);
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello

Replace

O Substituir método pode ser usado para substituir os caracteres dentro de StringBuilder o objeto com outro caractere especificado. O exemplo a seguir usa a Substituir método para pesquisar um StringBuilder para todas as instâncias do ponto de exclamação (!) de caracteres e substituí-los com o caractere de ponto de interrogação (?) de objeto.

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?
StringBuilder^ MyStringBuilder = gcnew StringBuilder("Hello World!");
MyStringBuilder->Replace('!', '?');
Console::WriteLine(MyStringBuilder);
// The example displays the following output:
//       Hello World?

Convertendo um objeto StringBuilder para uma seqüência de caracteres.

Você deve converter o StringBuilder o objeto para um String objeto antes que você pode passar a seqüência de caracteres representada pela StringBuilder objeto para um método que possui um String parâmetro ou exibi-lo na interface de usuário. Fazer essa conversão chamando o StringBuilder.ToString método. O exemplo a seguir chama um número de StringBuilder métodos e chama o StringBuilder.ToString() método para exibir a seqüência de caracteres.

Imports System
Imports System.IO
Imports System.Text

Public Class CharsToStr
    Public Shared Sub Main()
        ' Create an instance of StringBuilder that can then be modified.
        Dim sb As New StringBuilder("Some number of characters")
        ' Define and create an instance of a character array from which
        ' characters will be read into the StringBuilder.
        Dim b() As Char = {" ","t","o"," ","w","r","i","t","e"," ","t","o","."}
        ' Create an instance of StringWriter
        ' and attach it to the StringBuilder.
        Dim sw As New StringWriter(sb)
        ' Write three characters from the array into the StringBuilder.
        sw.Write(b, 0, 3)
        ' Display the output.
        Console.WriteLine(sb)
        ' Close the StringWriter.
        sw.Close()
    End Sub
End Class
using System;
using System.IO;
using System.Text;

public class CharsToStr
{
    public static void Main()
    {
        // Create an instance of StringBuilder that can then be modified.
        StringBuilder sb = new StringBuilder("Some number of characters");
        // Define and create an instance of a character array from which
        // characters will be read into the StringBuilder.
        char[] b = {' ','t','o',' ','w','r','i','t','e',' ','t','o','.'};
        // Create an instance of StringWriter
        // and attach it to the StringBuilder.
        StringWriter sw = new StringWriter(sb);
        // Write three characters from the array into the StringBuilder.
        sw.Write(b, 0, 3);
        // Display the output.
        Console.WriteLine(sb);
        // Close the StringWriter.
        sw.Close();
    }
}
using namespace System;
using namespace System::IO;
using namespace System::Text;

public ref class CharsToStr
{
public:
    static void Main()
    {
        // Create an instance of StringBuilder that can then be modified.
        StringBuilder^ sb = gcnew StringBuilder("Some number of characters");
        // Define and create an instance of a character array from which
        // characters will be read into the StringBuilder.
        array<Char>^ b = {' ','t','o',' ','w','r','i','t','e',' ','t','o','.'};
        // Create an instance of StringWriter
        // and attach it to the StringBuilder.
        StringWriter^ sw = gcnew StringWriter(sb);
        // Write three characters from the array into the StringBuilder.
        sw->Write(b, 0, 3);
        // Display the output.
        Console::WriteLine(sb);
        // Close the StringWriter.
        sw->Close();
    }
};

int main()
{
    CharsToStr::Main();
}

Consulte também

Referência

System.Text.StringBuilder

Conceitos

Tipos de Formatação

Outros recursos

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

Histórico de alterações

Date

History

Motivo

Adicionadas informações sobre StringBuilder- para -String conversão.

Comentários do cliente.