.NET'te StringBuilder Sınıfını Kullanma
String Nesne sabittir. sınıfındaki yöntemlerden birini her kullandığınızda, bellekte System.String yeni bir dize nesnesi oluşturursunuz ve bu da bu yeni nesne için yeni bir alan ayırma gerektirir. Bir dizede yinelenen değişiklikler yapmanız gereken durumlarda, yeni String nesne oluşturmayla ilişkili ek yük yüksek maliyetli olabilir. Sınıfı, System.Text.StringBuilder yeni bir nesne oluşturmadan bir dizeyi değiştirmek istediğinizde kullanılabilir. Örneğin, sınıfını StringBuilder kullanmak, bir döngüde birçok dizeyi birleştirirken performansı artırabilir.
System.Text Ad Alanını İçeri Aktarma
StringBuilder sınıfı ad alanında System.Text bulunur. Kodunuzda tam tür adı sağlamak zorunda kalmamak için ad alanını System.Text içeri aktarabilirsiniz:
using namespace System;
using namespace System::Text;
using System;
using System.Text;
Imports System.Text
StringBuilder Nesnesi Örneği Oluşturma
Aşağıdaki örnekte gösterildiği gibi, değişkeninizi aşırı yüklenmiş oluşturucu yöntemlerinden biriyle başlatarak sınıfının yeni bir örneğini StringBuilder oluşturabilirsiniz.
StringBuilder^ myStringBuilder = gcnew StringBuilder("Hello World!");
StringBuilder myStringBuilder = new StringBuilder("Hello World!");
Dim myStringBuilder As New StringBuilder("Hello World!")
Kapasite ve Uzunluğu Ayarlama
, kapsüllediğiniz dizedeki karakter sayısını genişletmenize olanak tanıyan dinamik bir nesne olsa StringBuilder da, tutabileceği karakter sayısı üst sınırı için bir değer belirtebilirsiniz. Bu değer nesnenin kapasitesi olarak adlandırılır ve geçerli StringBuilder olan dizenin uzunluğuyla karıştırılmamalıdır. Örneğin, uzunluğu 5 olan "Hello" dizesiyle sınıfının yeni bir örneğini StringBuilder oluşturabilir ve nesnenin en fazla 25 kapasiteye sahip olduğunu belirtebilirsiniz. öğesini değiştirdiğinizde StringBuilder, kapasiteye ulaşılana kadar boyutu kendisi için yeniden ayırmaz. Bu durum oluştuğunda, yeni alan otomatik olarak ayrılır ve kapasite iki katına çıkar. Aşırı yüklenmiş oluşturuculardan birini kullanarak sınıfın kapasitesini StringBuilder belirtebilirsiniz. Aşağıdaki örnek, nesnenin myStringBuilder
en fazla 25 alana genişletilebileceğini belirtir.
StringBuilder^ myStringBuilder = gcnew StringBuilder("Hello World!", 25);
StringBuilder myStringBuilder = new StringBuilder("Hello World!", 25);
Dim myStringBuilder As New StringBuilder("Hello World!", 25)
Ayrıca, nesnenizin uzunluk üst sınırını ayarlamak için okuma/yazma Capacity özelliğini kullanabilirsiniz. Aşağıdaki örnek, maksimum nesne uzunluğunu tanımlamak için Capacity özelliğini kullanır.
myStringBuilder->Capacity = 25;
myStringBuilder.Capacity = 25;
myStringBuilder.Capacity = 25
EnsureCapacity yöntemi geçerli StringBuilder'ın kapasitesini denetlemek için kullanılabilir. Kapasite geçirilen değerden büyükse hiçbir değişiklik yapılmaz; ancak kapasite geçirilen değerden küçükse geçerli kapasite geçirilen değerle eşleşecek şekilde değiştirilir.
Özelliği Length de görüntülenebilir veya ayarlanabilir. Length özelliğini Capacity özelliğinden daha büyük bir değere ayarlarsanız Capacity özelliği otomatik olarak Length özelliğiyle aynı değere değiştirilir. Length özelliğini geçerli StringBuilder içindeki dizenin uzunluğundan küçük bir değere ayarlamak dizeyi kısaltır.
StringBuilder Dizesini Değiştirme
Aşağıdaki tabloda, StringBuilder'ın içeriğini değiştirmek için kullanabileceğiniz yöntemler listelenir.
Yöntem adı | Kullanma |
---|---|
StringBuilder.Append | Bilgileri geçerli StringBuilder'ın sonuna ekler. |
StringBuilder.AppendFormat | Bir dizede geçirilen biçim belirticisini biçimlendirilmiş metinle değiştirir. |
StringBuilder.Insert | Geçerli StringBuilder'ın belirtilen dizinine bir dize veya nesne ekler. |
StringBuilder.Remove | Geçerli StringBuilder'dan belirtilen sayıda karakteri kaldırır. |
StringBuilder.Replace | Geçerli StringBuilder'da belirtilen bir karakterin veya dizenin tüm oluşumlarını belirtilen başka bir karakter veya dizeyle değiştirir. |
Arkasına Ekle
Append yöntemi, geçerli StringBuilder tarafından temsil edilen bir dizenin sonuna bir nesnenin metin veya dize gösterimi eklemek için kullanılabilir. Aşağıdaki örnek, "Merhaba Dünya" için bir StringBuilder başlatır ve nesnenin sonuna bir metin ekler. Alan gerektiğinde otomatik olarak ayrılır.
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
StringBuilder.AppendFormat yöntemi, nesnenin sonuna StringBuilder metin ekler. Biçimlendirilecek nesne veya nesnelerin uygulamasını çağırarak IFormattable bileşik biçimlendirme özelliğini destekler (daha fazla bilgi için bkz. Bileşik Biçimlendirme). Bu nedenle, sayısal, tarih ve saat ve numaralandırma değerleri için standart biçim dizelerini, sayısal ve tarih ve saat değerleri için özel biçim dizelerini ve özel türler için tanımlanan biçim dizelerini kabul eder. (Biçimlendirme hakkında bilgi için bkz. Biçimlendirme Türleri.) Değişkenlerin biçimini özelleştirmek ve bu değerleri bir StringBuilderöğesine eklemek için bu yöntemi kullanabilirsiniz. Aşağıdaki örnek, bir nesnenin AppendFormat sonuna StringBuilder para birimi değeri olarak biçimlendirilmiş bir tamsayı değeri yerleştirmek için yöntemini kullanır.
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
Ekleme
yöntemi geçerli InsertStringBuilder nesnede belirtilen konuma bir dize veya nesne ekler. Aşağıdaki örnek, bir nesnenin altıncı konumuna StringBuilder bir sözcük eklemek için bu yöntemi kullanır.
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!
Kaldır
Geçerli StringBuilder nesneden belirtilen sayıda karakteri, belirtilen sıfır tabanlı dizinden başlayarak kaldırmak için Remove yöntemini kullanabilirsiniz. Aşağıdaki örnek, bir StringBuilder nesneyi kısaltmak için Remove yöntemini kullanır.
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
Replace
Replace yöntemi, nesne içindeki StringBuilder karakterleri belirtilen başka bir karakterle değiştirmek için kullanılabilir. Aşağıdaki örnek, bir StringBuilder nesnede ünlem işareti karakterinin (!) tüm örneklerini aramak ve bunları soru işareti karakteri (?) ile değiştirmek için Replace yöntemini kullanır.
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?
StringBuilder Nesnesini Dizeye Dönüştürme
Nesnesi tarafından StringBuilderStringBuilder temsil edilen dizeyi parametresi olan bir String yönteme geçirebilmeniz veya kullanıcı arabiriminde görüntüleyebilmeniz için önce nesneyi bir String nesneye dönüştürmeniz gerekir. Yöntemini çağırarak bu dönüştürmeyi StringBuilder.ToString yaparsınız. Aşağıdaki örnek bir dizi StringBuilder yöntemi çağırır ve ardından dizeyi StringBuilder.ToString() görüntülemek için yöntemini çağırır.
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
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin