C#中StringBuilder用法以及和String的區(qū)別分析
String類有不可改變性。每次執(zhí)行字符操作時,都會創(chuàng)建一個新的String對象。
StringBuilder 類解決了對字符串進行重復修改的過程中創(chuàng)建大量對象的問題。初始化一個StringBuilder 之后,它會自動申請一個默認的StringBuilder 容量(默認值是16),這個容量是由Capacity來控制的.并且允許,我們根據(jù)需要來控制Capacity的大小,也可以通過Length來獲取或設(shè)置StringBuilder 的長度.
舉例: 用String類這么寫
String begin_query = "select UPPER(MachineName) As MachineName, "+"LOWER(MachineOwner) As MachineOwner, Status, "+ "StartTime from NET_STRESS WHERE ";
String end_query = " AND StartTime > '" + startTime + "'AND StartTime < '" + endTime + "'";
String query = begin_query + GetWhereClause("PASSED") + end_query;
用StringBuilder類這么寫:
StringBuilder begin_query = new StringBuilder();
begin_query.Append("select UPPER(MachineName) As MachineName ");
begin_query.Append("LOWER(MachineOwner) As MachineOwner, Status, ");
begin_query.Append("StartTime from NET_STRESS WHERE ");
StringBuilder end_query = new StringBuilder();
end_query.Append(" AND StartTime > '");
end_query.Append(startTime);
end_query.Append("' AND StartTime < '");
end_query.Append(endTime);
end_query.Append("'");
String query = begin_query.Append(GetWhereClause("PASSED")).Append(end_query).ToString();
通過用一個重載的構(gòu)造函數(shù)方法初始化變量,可以創(chuàng)建 StringBuilder 類的新實例,正如以下示例中所闡釋的那樣。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
設(shè)置容量和長度
雖然 StringBuilder 對象是動態(tài)對象,允許擴充它所封裝的字符串中字符的數(shù)量,但是您可以為它可容納的最大字符數(shù)指定一個值。此值稱為該對象的容量,不應(yīng)將它與當前 StringBuilder 對象容納的字符串長度混淆在一起。例如,可以創(chuàng)建 StringBuilder 類的帶有字符串“Hello”(長度為 5)的一個新實例,同時可以指定該對象的最大容量為 25。當修改 StringBuilder 時,在達到容量之前,它不會為其自己重新分配空間。當達到容量時,將自動分配新的空間且容量翻倍??梢允褂弥剌d的構(gòu)造函數(shù)之一來指定 StringBuilder 類的容量。以下代碼示例指定可以將 MyStringBuilder 對象擴充到最大 25 個空白。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!", 25);
另外,可以使用讀/寫 Capacity 屬性來設(shè)置對象的最大長度。以下代碼示例使用 Capacity 屬性來定義對象的最大長度。
MyStringBuilder.Capacity = 25;
EnsureCapacity 方法可用來檢查當前 StringBuilder 的容量。如果容量大于傳遞的值,則不進行任何更改;但是,如果容量小于傳遞的值,則會更改當前的容量以使其與傳遞的值匹配。
也可以查看或設(shè)置 Length 屬性。如果將 Length 屬性設(shè)置為大于 Capacity 屬性的值,則自動將 Capacity 屬性更改為與 Length 屬性相同的值。如果將 Length 屬性設(shè)置為小于當前 StringBuilder 對象內(nèi)的字符串長度的值,則會縮短該字符串。
修改 StringBuilder 字符串
下表列出了可以用來修改 StringBuilder 的內(nèi)容的方法。
方法名 使用
StringBuilder.Append 將信息追加到當前 StringBuilder 的結(jié)尾。
StringBuilder.AppendFormat 用帶格式文本替換字符串中傳遞的格式說明符。
StringBuilder.Insert 將字符串或?qū)ο蟛迦氲疆斍?nbsp; StringBuilder 對象的指定索引處。
StringBuilder.Remove 從當前 StringBuilder 對象中移除指定數(shù)量的字符。
StringBuilder.Replace 替換指定索引處的指定字符。
Append
Append 方法可用來將文本或?qū)ο蟮淖址硎拘问教砑拥接僧斍?nbsp; StringBuilder 對象表示的字符串的結(jié)尾處。以下示例將一個 StringBuilder 對象初始化為“Hello World”,然后將一些文本追加到該對象的結(jié)尾處。將根據(jù)需要自動分配空間。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(MyStringBuilder);
此示例將 Hello World! What a beautiful day. 顯示到控制臺。
AppendFormat
AppendFormat 方法將文本添加到 StringBuilder 的結(jié)尾處,而且實現(xiàn)了 IFormattable 接口,因此可接受格式化部分中描述的標準格式字符串??梢允褂么朔椒▉碜远x變量的格式并將這些值追加到 StringBuilder 的后面。以下示例使用 AppendFormat 方法將一個設(shè)置為貨幣值格式的整數(shù)值放置到 StringBuilder 的結(jié)尾。
int MyInt = 25;
StringBuilder MyStringBuilder = new StringBuilder("Your total is ");
MyStringBuilder.AppendFormat("{0:C} ", MyInt);
Console.WriteLine(MyStringBuilder);
此示例將 Your total is $25.00 顯示到控制臺。
Insert
Insert 方法將字符串或?qū)ο筇砑拥疆斍?nbsp; StringBuilder 中的指定位置。以下示例使用此方法將一個單詞插入到 StringBuilder 的第六個位置。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);
此示例將 Hello Beautiful World! 顯示到控制臺。
Remove
可以使用 Remove 方法從當前 StringBuilder 中移除指定數(shù)量的字符,移除過程從指定的從零開始的索引處開始。以下示例使用 Remove 方法縮短 StringBuilder。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);
此示例將 Hello 顯示到控制臺。
Replace
使用 Replace 方法,可以用另一個指定的字符來替換 StringBuilder 對象內(nèi)的字符。以下示例使用 Replace 方法來搜索 StringBuilder 對象,查找所有的感嘆號字符 (!),并用問號字符 (?) 來替換它們。
StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Replace('!', '?');
Console.WriteLine(MyStringBuilder);
此示例將 Hello World? 顯示到控制臺。
相關(guān)文章
C#實現(xiàn)將類的內(nèi)容寫成JSON格式字符串的方法
這篇文章主要介紹了C#實現(xiàn)將類的內(nèi)容寫成JSON格式字符串的方法,涉及C#針對json格式數(shù)據(jù)轉(zhuǎn)換的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08C#程序中創(chuàng)建、復制、移動、刪除文件或文件夾的示例
這篇文章主要介紹了C#程序中創(chuàng)建、復制、移動、刪除文件或文件夾的示例,即對System.IO命名空間中類的運用,需要的朋友可以參考下2016-02-02