Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O String objeto é imutável. Sempre que você usa um dos métodos na System.String classe, cria um novo objeto de cadeia de caracteres na memória, o que requer uma nova alocação de espaço para esse novo objeto. Em situações em que você precisa executar modificações repetidas em uma cadeia de caracteres, a sobrecarga associada à criação de um novo String objeto pode ser dispendiosa. A System.Text.StringBuilder classe pode ser usada quando você deseja modificar uma cadeia de caracteres sem criar um novo objeto. Por exemplo, usar a classe StringBuilder pode aumentar o desempenho ao concatenar muitas strings em um loop.
Importando o namespace System.Text
A StringBuilder classe é encontrada no System.Text namespace. Para evitar ter que fornecer um nome de tipo totalmente qualificado em seu código, você pode importar o System.Text namespace:
using System;
using System.Text;
Imports System.Text
Instanciando um objeto StringBuilder
Você pode criar uma nova instância da StringBuilder classe inicializando sua variável com um dos métodos de construtor sobrecarregados, conforme ilustrado no exemplo a seguir.
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
Dim myStringBuilder As New StringBuilder("Hello World!")
Definindo a capacidade e o comprimento
Embora seja StringBuilder um objeto dinâmico que permite expandir o número de caracteres na cadeia de caracteres que ele encapsula, você pode especificar um valor para o número máximo de caracteres que ele pode conter. Esse valor é chamado de capacidade do objeto e não deve ser confundido com o comprimento da cadeia de caracteres que a corrente StringBuilder contém. Por exemplo, você pode criar uma nova instância da StringBuilder classe com a cadeia 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 realoca o tamanho para si mesmo até que a capacidade seja atingida. Quando isso ocorre, o novo espaço é alocado automaticamente e a capacidade é dobrada. Você pode especificar a capacidade da StringBuilder classe usando um dos construtores sobrecarregados. O exemplo a seguir especifica que o myStringBuilder
objeto pode ser expandido para um máximo de 25 espaços.
StringBuilder myStringBuilder = new StringBuilder("Hello World!", 25);
Dim myStringBuilder As New StringBuilder("Hello World!", 25)
Além disso, você pode usar a propriedade de leitura/gravação Capacity para definir o comprimento máximo do objeto. O exemplo a seguir usa a propriedade Capacity para definir o comprimento máximo do objeto.
myStringBuilder.Capacity = 25;
myStringBuilder.Capacity = 25
O EnsureCapacity método pode ser usado para verificar a capacidade do StringBuilder atual. Se a capacidade for maior que o valor passado, nenhuma alteração será feita; no entanto, se a capacidade for menor que o valor passado, a capacidade atual será alterada para corresponder ao valor passado.
A Length propriedade também pode ser exibida ou definida. Se você definir a propriedade Length como um valor maior que a propriedade Capacity , a propriedade Capacity será alterada automaticamente para o mesmo valor que a propriedade Length . Definir a propriedade Length como um valor menor que o comprimento da cadeia de caracteres dentro do StringBuilder atual reduz a cadeia de caracteres.
Modificando a cadeia de caracteres do StringBuilder
A tabela a seguir lista os métodos que você pode usar para modificar o conteúdo de um StringBuilder.
Nome do método | Utilização |
---|---|
StringBuilder.Append | Acrescenta informações ao final do StringBuilder atual. |
StringBuilder.AppendFormat | Substitui um especificador de formato passado em uma cadeia de caracteres por texto formatado. |
StringBuilder.Insert | Insere uma cadeia de caracteres ou objeto no índice especificado do StringBuilder atual. |
StringBuilder.Remove | Remove um número especificado de caracteres do StringBuilder atual. |
StringBuilder.Replace | Substitui todas as ocorrências de um caractere ou cadeia de caracteres especificado no StringBuilder atual por outro caractere ou cadeia de caracteres especificado. |
Acrescentar
O método Append pode ser usado para adicionar texto ou uma representação de cadeia de caracteres de um objeto ao final de uma cadeia de caracteres representada pelo StringBuilder atual. O exemplo a seguir inicializa um StringBuilder para "Hello World" e acrescenta um texto ao final do objeto. O espaço é alocado automaticamente conforme necessário.
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.
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.
Método AppendFormat
O StringBuilder.AppendFormat método adiciona texto ao final do StringBuilder objeto. Ele dá suporte ao recurso de formatação composta ao invocar a IFormattable implementação do objeto ou dos objetos a serem formatados. Portanto, ele aceita as cadeias de caracteres de formato padrão para valores numéricos, de data e hora e de enumeração, as cadeias de caracteres de formato personalizado para valores numéricos e de data e hora e as cadeias 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 esses valores a um StringBuilder. O exemplo a seguir usa o AppendFormat método para colocar um valor inteiro formatado como um valor de moeda no final de um StringBuilder objeto.
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
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
Inserir
O Insert método adiciona uma cadeia de caracteres ou objeto a uma posição especificada no objeto atual StringBuilder . O exemplo a seguir usa esse método para inserir uma palavra na sexta posição de um StringBuilder objeto.
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello Beautiful World!
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Insert(6, "Beautiful ")
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello Beautiful World!
Remover
Você pode usar o método Remove para remover um número especificado de caracteres do objeto atual StringBuilder , começando em um índice baseado em zero especificado. O exemplo a seguir usa o método Remove para reduzir um StringBuilder objeto.
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Remove(5,7);
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Remove(5, 7)
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello
Substitua
O método Replace pode ser usado para substituir caracteres dentro do StringBuilder objeto por outro caractere especificado. O exemplo a seguir usa o método Replace para pesquisar um StringBuilder objeto para todas as instâncias do caractere de ponto de exclamação (!) e substituí-las pelo caractere de ponto de interrogação (?).
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
myStringBuilder.Replace('!', '?');
Console.WriteLine(myStringBuilder);
// The example displays the following output:
// Hello World?
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Replace("!"c, "?"c)
Console.WriteLine(myStringBuilder)
' The example displays the following output:
' Hello World?
Convertendo um objeto StringBuilder em uma cadeia de caracteres
Você deve converter o StringBuilder objeto em um String objeto antes de passar a cadeia de caracteres representada pelo StringBuilder objeto para um método que tenha um String parâmetro ou exibi-lo na interface do usuário. Você faz essa conversão chamando o StringBuilder.ToString método. O exemplo a seguir chama vários StringBuilder métodos e chama o StringBuilder.ToString() método para exibir a cadeia de caracteres.
using System;
using System.Text;
public class Example
{
public static void Main()
{
StringBuilder sb = new StringBuilder();
bool flag = true;
string[] spellings = { "recieve", "receeve", "receive" };
sb.AppendFormat("Which of the following spellings is {0}:", flag);
sb.AppendLine();
for (int ctr = 0; ctr <= spellings.GetUpperBound(0); ctr++) {
sb.AppendFormat(" {0}. {1}", ctr, spellings[ctr]);
sb.AppendLine();
}
sb.AppendLine();
Console.WriteLine(sb.ToString());
}
}
// The example displays the following output:
// Which of the following spellings is True:
// 0. recieve
// 1. receeve
// 2. receive
Imports System.Text
Module Example
Public Sub Main()
Dim sb As New StringBuilder()
Dim flag As Boolean = True
Dim spellings() As String = {"recieve", "receeve", "receive"}
sb.AppendFormat("Which of the following spellings is {0}:", flag)
sb.AppendLine()
For ctr As Integer = 0 To spellings.GetUpperBound(0)
sb.AppendFormat(" {0}. {1}", ctr, spellings(ctr))
sb.AppendLine()
Next
sb.AppendLine()
Console.WriteLine(sb.ToString())
End Sub
End Module
' The example displays the following output:
' Which of the following spellings is True:
' 0. recieve
' 1. receeve
' 2. receive
Consulte também
- System.Text.StringBuilder
- Operações básicas de cadeia de caracteres
- Tipos de Formatação