Bagikan melalui


Menggunakan Kelas StringBuilder di .NET

Objek String tidak dapat diubah. Setiap kali Anda menggunakan salah satu metode di kelas System.String, Anda membuat objek string baru dalam memori, yang memerlukan alokasi ruang baru untuk objek baru tersebut. Dalam situasi di mana Anda perlu melakukan modifikasi berulang pada string, overhead yang terkait dengan pembuatan objek String baru bisa menjadi mahal. Kelas System.Text.StringBuilder dapat digunakan saat Anda ingin memodifikasi string tanpa membuat objek baru. Misalnya, menggunakan kelas StringBuilder dapat meningkatkan performa saat menggabungkan banyak string bersama-sama dalam perulangan.

Mengimpor Namespace Layanan System.Text

Kelas StringBuilder berada di namespace layanan System.Text. Untuk menghindari harus memberikan nama jenis yang sepenuhnya memenuhi syarat dalam kode Anda, Anda dapat mengimpor namespace System.Text:

using namespace System;
using namespace System::Text;
using System;
using System.Text;
Imports System.Text

Membuat Instans Objek StringBuilder

Anda dapat membuat instans kelas StringBuilder baru dengan menginisialisasi variabel dengan salah satu metode konstruktor yang kelebihan beban, seperti yang diilustrasikan dalam contoh berikut.

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

Mengatur Kapasitas dan Panjang

Meskipun StringBuilder adalah objek dinamis yang memungkinkan Anda memperluas jumlah karakter dalam string yang ia enkapsulasi, Anda dapat menentukan nilai untuk jumlah karakter maksimum yang dapat ia simpan. Nilai ini disebut kapasitas objek dan tidak boleh rancu dengan panjang string yang disimpan StringBuilder saat ini. Misalnya, Anda dapat membuat instans kelas StringBuilder baru dengan string "Hello", yang memiliki panjang 5, dan Anda dapat menentukan bahwa objek memiliki kapasitas maksimum 25. Ketika Anda memodifikasi StringBuilder, ia tidak merealokasi ukuran untuk dirinya sendiri sampai kapasitasnya tercapai. Ketika ini terjadi, ruang baru dialokasikan secara otomatis dan kapasitasnya berlipat ganda. Anda dapat menentukan kapasitas kelas StringBuilder menggunakan salah satu konstruktor yang kelebihan beban. Contoh berikut menentukan bahwa objek myStringBuilder dapat diperluas hingga maksimum 25 spasi.

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

Selain itu, Anda dapat menggunakan properti Capacity baca/tulis untuk mengatur panjang maksimum objek Anda. Contoh berikut menggunakan properti Kapasitas untuk menentukan panjang objek maksimum.

myStringBuilder->Capacity = 25;
myStringBuilder.Capacity = 25;
myStringBuilder.Capacity = 25

Metode EnsureCapacity ini dapat digunakan untuk memeriksa kapasitas StringBuilder saat ini. Jika kapasitas lebih besar dari nilai yang diteruskan, tidak ada perubahan yang dilakukan; namun, jika kapasitas lebih kecil dari nilai yang diteruskan, kapasitas saat ini diubah agar sesuai dengan nilai yang diteruskan.

Properti Length juga dapat ditampilkan atau diatur. Jika Anda mengatur properti Panjang ke nilai yang lebih besar dari properti Kapasitas, properti Kapasitas secara otomatis diubah ke nilai yang sama dengan properti Panjang. Mengatur properti Panjang ke nilai yang kurang dari panjang string dalam StringBuilder saat ini memperpendek string.

Memodifikasi String StringBuilder

Tabel berikut mencantumkan metode yang dapat Anda gunakan untuk mengubah konten StringBuilder.

Nama metode Menggunakan
StringBuilder.Append Menambahkan informasi ke akhir StringBuilder saat ini.
StringBuilder.AppendFormat Mengganti penentu format yang diteruskan dalam string dengan teks yang diformat.
StringBuilder.Insert Menyisipkan string atau objek ke dalam indeks yang ditentukan dari StringBuilder saat ini.
StringBuilder.Remove Menghapus sejumlah karakter tertentu dari StringBuilder saat ini.
StringBuilder.Replace Mengganti semua kemunculan karakter atau string tertentu dalam StringBuilder saat ini dengan karakter atau string lain yang ditentukan.

Lampirkan

Metode Append dapat digunakan untuk menambahkan teks atau representasi string objek ke akhir string yang direpresentasikan oleh StringBuilder saat ini. Contoh berikut menginisialisasi StringBuilder ke "Halo Dunia" lalu menambahkan beberapa teks ke akhir objek. Ruang dialokasikan secara otomatis sesuai kebutuhan.

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.
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.

AppendFormat

Metode StringBuilder.AppendFormat menambahkan teks ke akhir objek StringBuilder. Ia mendukung fitur pemformatan komposit (untuk informasi selengkapnya, lihat Pemformatan Komposit) dengan memanggil implementasi IFormattable dari objek atau objek yang akan diformat. Oleh karena itu, ia menerima string format standar untuk nilai numerik, tanggal dan waktu, dan enumerasi, string format kustom untuk nilai numerik serta tanggal dan waktu, dan string format yang ditentukan untuk jenis kustom. (Untuk informasi terkait pemformatan, lihat Jenis Pemformatan.) Anda dapat menggunakan metode ini untuk menyesuaikan format variabel dan menambahkan nilai tersebut ke StringBuilder. Contoh berikut menggunakan metode AppendFormat untuk menempatkan nilai bilangan bulat yang diformat sebagai nilai mata uang di akhir objek StringBuilder.

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
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  

Sisipkan

Metode Insert menambahkan string atau objek ke posisi tertentu dalam objek StringBuilder saat ini. Contoh berikut menggunakan metode ini untuk menyisipkan kata ke posisi keenam dari objek StringBuilder.

StringBuilder^ myStringBuilder = gcnew 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!
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Insert(6, "Beautiful ")
Console.WriteLine(myStringBuilder)
' The example displays the following output:
'      Hello Beautiful World!

Hapus

Anda dapat menggunakan metode Remove untuk menghapus sejumlah karakter tertentu dari objek StringBuilder saat ini, yang dimulai pada indeks berbasis nol yang ditentukan. Contoh berikut menggunakan metode Remove untuk mempersingkat objek StringBuilder.

StringBuilder^ myStringBuilder = gcnew 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
Dim myStringBuilder As New StringBuilder("Hello World!")
myStringBuilder.Remove(5, 7)
Console.WriteLine(myStringBuilder)
' The example displays the following output:
'       Hello

Menggantikan

Metode Replace dapat digunakan untuk mengganti karakter dalam objek StringBuilder dengan karakter lain yang ditentukan. Contoh berikut menggunakan metode Replace untuk mencari objek StringBuilder untuk semua instans karakter tanda seru (!) dan menggantinya dengan karakter tanda tanya (?).

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

Mengonversi Objek StringBuilder menjadi String

Anda harus mengonversi objek StringBuilder menjadi objek String sebelum dapat meneruskan string yang direpresentasikan oleh objek StringBuilder ke metode yang memiliki parameter String atau menampilkannya di antarmuka pengguna. Anda melakukannya dengan cara memanggil metode StringBuilder.ToString. Contoh berikut memanggil sejumlah metode StringBuilder lalu memanggil metode StringBuilder.ToString() untuk menampilkan string.

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

Lihat juga