Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Objekt String je neměnný. Pokaždé, když použijete jednu z metod ve System.String třídě, vytvoříte nový objekt řetězce v paměti, který vyžaduje nové přidělení místa pro tento nový objekt. V situacích, kdy potřebujete provádět opakované úpravy řetězce, může být režie spojená s vytvořením nového String objektu nákladná. Třídu System.Text.StringBuilder lze použít, pokud chcete upravit řetězec bez vytvoření nového objektu. Například použití třídy StringBuilder může zvýšit výkon při spojování mnoha řetězců ve smyčce.
Import názvového prostoru System.Text
Třída StringBuilder se nachází v System.Text oboru názvů. Pokud se chcete vyhnout zadání plně kvalifikovaného názvu typu v kódu, můžete importovat obor názvů System.Text:
using System;
using System.Text;
Imports System.Text
Vytvoření instance objektu StringBuilder
Novou instanci StringBuilder třídy můžete vytvořit inicializací proměnné pomocí jedné z přetížených metod konstruktoru, jak je znázorněno v následujícím příkladu.
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
Dim myStringBuilder As New StringBuilder("Hello World!")
Nastavení kapacity a délky
I když je StringBuilder dynamický objekt, který vám umožňuje rozšířit počet znaků v řetězci, který zapouzdřuje, můžete stanovit maximální počet znaků, které může obsahovat. Tato hodnota se nazývá kapacita objektu a neměla by být zaměňována s délkou řetězce, který aktuální StringBuilder obsahuje. Můžete například vytvořit novou instanci StringBuilder třídy s řetězcem "Hello", který má délku 5, a můžete určit, že objekt má maximální kapacitu 25. Při úpravě StringBuilder si nepřiděluje znovu velikost, dokud není dosaženo kapacity. V takovém případě se nové místo přidělí automaticky a kapacita se zdvojnásobí. Kapacitu StringBuilder třídy můžete zadat pomocí jednoho z přetížených konstruktorů. Následující příklad určuje, že myStringBuilder
objekt lze rozšířit na maximálně 25 mezer.
StringBuilder myStringBuilder = new StringBuilder("Hello World!", 25);
Dim myStringBuilder As New StringBuilder("Hello World!", 25)
Kromě toho můžete použít vlastnost pro čtení a zápis Capacity k nastavení maximální délky objektu. Následující příklad používá Capacity vlastnost definovat maximální délku objektu.
myStringBuilder.Capacity = 25;
myStringBuilder.Capacity = 25
Metodu EnsureCapacity lze použít ke kontrole kapacity aktuální StringBuilder. Pokud je kapacita větší než předaná hodnota, neprovedou se žádné změny; Pokud je však kapacita menší než předaná hodnota, aktuální kapacita se změní tak, aby odpovídala předané hodnotě.
Vlastnost Length lze také zobrazit nebo nastavit. Pokud vlastnost Length nastavíte na hodnotu, která je větší než vlastnost Capacity , vlastnost Capacity se automaticky změní na stejnou hodnotu jako Length vlastnost. Nastavení vlastnosti Length na hodnotu, která je menší než délka řetězce v aktuálním StringBuilderu zkracuje řetězec.
Úprava řetězce StringBuilder
Následující tabulka uvádí metody, které můžete použít k úpravě obsahu StringBuilder.
Název metody | Používání |
---|---|
StringBuilder.Append | Připojí informace na konec aktuálního StringBuilderu. |
StringBuilder.AppendFormat | Nahradí specifikátor formátu předaný v řetězci formátovaným textem. |
StringBuilder.Insert | Vloží řetězec nebo objekt do zadaného indexu aktuální StringBuilder. |
StringBuilder.Remove | Odebere zadaný počet znaků z aktuálního StringBuilderu. |
StringBuilder.Replace | Nahradí všechny výskyty zadaného znaku nebo řetězce v aktuálním StringBuilderu jiným zadaným znakem nebo řetězcem. |
Připojit
Metoda Append lze použít k přidání textu nebo řetězcové reprezentace objektu na konec řetězce reprezentované aktuálním StringBuilder. Následující příklad inicializuje StringBuilder na "Hello World" a pak připojí nějaký text na konec objektu. Prostor se automaticky přidělí podle potřeby.
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.
Připojit formát
Metoda StringBuilder.AppendFormat přidá text na konec objektu StringBuilder . Podporuje funkci složeného formátování voláním IFormattable implementace objektu nebo objektů, které se mají formátovat. Proto přijímá standardní formátovací řetězce pro číselné hodnoty, datum a čas a výčty, vlastní formátovací řetězce pro číselné a hodnoty data a času a formátovací řetězce definované pro vlastní typy. (Informace o formátování naleznete v tématu Typy formátování.) Tuto metodu můžete použít k přizpůsobení formátu proměnných a připojení těchto hodnot k objektu StringBuilder. Následující příklad používá metodu AppendFormat k umístění celočíselné hodnoty formátované jako hodnota měny na konec objektu StringBuilder .
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
Vložit
Metoda Insert přidá řetězec nebo objekt do zadané pozice v aktuálním StringBuilder objektu. Následující příklad používá tuto metodu k vložení slova do šesté pozice objektu StringBuilder .
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!
Odstranit
Metodu Remove můžete použít k odebrání zadaného počtu znaků z aktuálního StringBuilder objektu, počínaje zadaným indexem založeným na nule. Následující příklad používá Remove metoda ke zkrácení objektu StringBuilder .
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
Nahradit
Metodu Replace lze použít k nahrazení znaků uvnitř StringBuilder objektu jiným zadaným znakem. Následující příklad používá metodu Replace k vyhledání v objektu StringBuilder všech výskytů vykřičníku (!) a jejich nahrazení otazníkem (?).
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?
Převod objektu StringBuilder na řetězec
Než budete moci řetězec reprezentovaný StringBuilder objektem předat metodě s parametrem String nebo jej zobrazit v uživatelském rozhraní, musíte převést StringBuilder objekt na String objekt. Tento převod provedete voláním StringBuilder.ToString metody. Následující příklad volá řadu StringBuilder metod a potom volá metodu StringBuilder.ToString() pro zobrazení řetězce.
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
Viz také
- System.Text.StringBuilder
- základní operace s řetězci
- typy formátování