Megosztás a következőn keresztül:


A StringBuilder osztály használata a .NET-ben

Az String objektum nem módosítható. Minden alkalommal, amikor a System.String osztály egyik metódusát használja, létrehoz egy új sztringobjektumot a memóriában, ami új memóriaterületet igényel az új objektum számára. Olyan helyzetekben, amikor ismétlődő módosításokat kell végrehajtania egy sztringen, az új String objektumok létrehozásával járó többletterhelés költséges lehet. Az System.Text.StringBuilder osztály akkor használható, ha egy sztringet új objektum létrehozása nélkül szeretne módosítani. Például a StringBuilder osztály használata növelheti a teljesítményt, ha sok sztringet fűz össze egy ciklusban.

A System.Text névtérnek az importálása

Az StringBuilder osztály a System.Text névtérben található. Annak érdekében, hogy ne kelljen teljesen minősített típusnevet megadnia a kódban, importálhatja a System.Text névteret:

using System;
using System.Text;
Imports System.Text

StringBuilder-objektum példányosítása

Az osztály új példányát úgy StringBuilder hozhatja létre, hogy inicializálja a változót az egyik túlterhelt konstruktor metódussal, ahogy az az alábbi példában is látható.

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

A kapacitás és a hossz beállítása

Bár ez StringBuilder egy dinamikus objektum, amely lehetővé teszi a beágyazott sztringben szereplő karakterek számának kibontását, megadhat egy értéket a maximálisan tartható karakterek számára. Ezt az értéket az objektum kapacitásának nevezzük, és nem tévesztendő össze az aktuális StringBuilder karakterlánc hosszával. Létrehozhat például egy új osztálypéldányt a StringBuilder "Hello" sztringgel, amelynek hossza 5, és megadhatja, hogy az objektum maximális kapacitása 25 legyen. Ha módosítja a StringBuilder, nem oszt ki új méretet magának, amíg el nem éri a kapacitását. Ha ez történik, a rendszer automatikusan lefoglalja az új területet, és megduplázza a kapacitást. Az StringBuilder osztály kapacitását a túlterhelt konstruktorok egyikével adhatja meg. Az alábbi példa azt határozza meg, hogy az myStringBuilder objektum legfeljebb 25 szóközzel bővíthető.

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

Emellett az írási/ Capacity olvasási tulajdonság használatával megadhatja az objektum maximális hosszát. Az alábbi példa a Kapacitás tulajdonság használatával határozza meg az objektum maximális hosszát.

myStringBuilder.Capacity = 25;
myStringBuilder.Capacity = 25

Ez a EnsureCapacity módszer az aktuális StringBuilder kapacitásának ellenőrzésére használható. Ha a kapacitás nagyobb az átadott értéknél, nem történik változás; ha azonban a kapacitás kisebb az átadott értéknél, az aktuális kapacitás az átadott értéknek megfelelően módosul.

A Length tulajdonság megtekinthető vagy beállítható. Ha a Hossz tulajdonságot a Kapacitás tulajdonságnál nagyobb értékre állítja be, a Kapacitás tulajdonság automatikusan ugyanarra az értékre változik, mint a Hossz tulajdonság. Ha a Length tulajdonságot olyan értékre állítja, amely kisebb, mint az aktuális StringBuilder karakterláncának hossza, lerövidíti a sztringet.

A karakterlánc módosítása StringBuilderrel

Az alábbi táblázat a StringBuilder tartalmának módosítására használható módszereket sorolja fel.

Függvény neve Használd
StringBuilder.Append Az információkat az aktuális StringBuilder végéhez fűzi.
StringBuilder.AppendFormat A sztringben átadott formátumjelölőt formázott szövegre cseréli.
StringBuilder.Insert Sztringet vagy objektumot szúr be az aktuális StringBuilder megadott indexébe.
StringBuilder.Remove Eltávolít egy megadott számú karaktert az aktuális StringBuilderből.
StringBuilder.Replace Egy adott karakter vagy sztring összes előfordulását lecseréli az aktuális StringBuilderben egy másik megadott karakterre vagy sztringre.

Hozzáfűz

A Hozzáfűzés metódussal szöveget vagy objektum sztring-ábrázolását adhat hozzá az aktuális StringBuilder által képviselt sztring végéhez. Az alábbi példa inicializál egy StringBuildert a "Hello World" értékre, majd hozzáfűz néhány szöveget az objektum végéhez. A rendszer szükség szerint automatikusan lefoglalja a területet.

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.

Formátumhozzáfűzés

A StringBuilder.AppendFormat metódus szöveget ad hozzá az StringBuilder objektum végéhez. Támogatja az összetett formázási funkciót az objektum vagy objektumok formázandó implementációjának meghívásával IFormattable . Ezért elfogadja a numerikus, dátum- és időértékek és enumerálási értékek szabványos formátumsztringeit, a numerikus és dátum- és időértékek egyéni formázási sztringeit, valamint az egyéni típusokhoz definiált formátumsztringeket. (A formázással kapcsolatos információkért lásd: Formázástípusok.) Ezzel a módszerrel testre szabhatja a változók formátumát, és hozzáfűzheti ezeket az értékeket egy StringBuilder. Az alábbi példa a AppendFormat metódussal egy pénznemértékként formázott egész számot helyez el egy StringBuilder objektum végén.

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  

Beilleszt

A Insert metódus sztringet vagy objektumot ad hozzá egy adott pozícióhoz az aktuális StringBuilder objektumban. Az alábbi példa ezzel a módszerrel szúr be egy szót egy objektum hatodik pozíciójába 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!

Eltávolítás

Az Eltávolítás metódussal eltávolíthat egy megadott számú karaktert az aktuális StringBuilder objektumból, egy megadott nulla alapú indextől kezdve. Az alábbi példa az Eltávolítás metódussal rövidít egy objektumot 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

Helyettesít

A Csere metódussal az objektumon belüli StringBuilder karaktereket egy másik megadott karakterre cserélheti. Az alábbi példa a Csere metódussal keres egy StringBuilder objektumot a felkiáltójel karakterének (!) összes példányában, és lecseréli őket a kérdőjel karakterre (?).

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?

StringBuilder-objektum átalakítása sztringgé

Az objektumot át kell alakítania objektummá StringBuilderString , mielőtt átadhatja az StringBuilder objektum által képviselt sztringet egy String paraméterrel rendelkező metódusnak, vagy megjelenítheti azt a felhasználói felületen. Ezt az átalakítást a StringBuilder.ToString metódus meghívásával teheti meg. Az alábbi példa több StringBuilder metódust hív meg, majd meghívja a StringBuilder.ToString() metódust a sztring megjelenítéséhez.

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

Lásd még