前言
C# 中的字符串類型是不可變的,因此在其創(chuàng)建后就無法更改其內(nèi)容。如果我們在創(chuàng)建字符串類型對象后嘗試修改該對象將導(dǎo)致在內(nèi)存中創(chuàng)建該對象的新實例。此外,如果字符串頻繁更改,可能會出現(xiàn)性能問題。對于需要修改字符串,可以使用 StringBuilder 來解決,因為與字符串不同,它能夠動態(tài)擴展內(nèi)存以適應(yīng)任何操作。本文將介紹它的用法。
StringBuilder
1、實例:
StringBuilder 實例化相當(dāng)簡單。使用 new 關(guān)鍵字創(chuàng)建類的對象,就可以實例化。根據(jù)需求選擇對應(yīng)的構(gòu)造函數(shù)。// 創(chuàng)建的是空白可變字符串對象,不包含任何內(nèi)容
StringBuilder stringBuilderEmpty = new StringBuilder();
// 根據(jù)字符串的內(nèi)容,來創(chuàng)建可變字符串對象
StringBuilder stringBuilder = new StringBuilder("Hello, ");
2、轉(zhuǎn)換:
使用 StringBuilder 不會直接返回字符串,需要我們使用ToString()方法來轉(zhuǎn)換為字符串。// 創(chuàng)建可變字符串對象
StringBuilder stringBuilder = new StringBuilder("李明,您好!");
// 輸出
Console.WriteLine(stringBuilder.ToString());
3、追加:
使用Append 方法,將新字符串追加到現(xiàn)有 StringBuilder 的末尾。其長度和空間自動增加。// 創(chuàng)建可變字符串對象
StringBuilder stringBuilderTime = new StringBuilder("現(xiàn)在的時間是:");
// 追加字符
stringBuilderTime.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
// 轉(zhuǎn)換為字符串
string dateTimeNow = stringBuilderTime.ToString();
// 輸出 dateTimeNow - 現(xiàn)在的時間是:2024-06-15 17:56:36
Console.WriteLine("{0} - {1}", nameof(dateTimeNow), dateTimeNow);
3.1、追加終止符:
使用 AppendLine 方法可以方便地在 StringBuilder 的末尾追終止符。// 創(chuàng)建可變字符串對象
StringBuilder stringBuilderTime = new StringBuilder("現(xiàn)在的時間是:");
// 追加字符
stringBuilderTime.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
// 追加終止符
stringBuilderTime.AppendLine();
// 追加字符
stringBuilderTime.Append("今天是星期: ");
stringBuilderTime.Append(DateTime.Now.DayOfWeek);
// 轉(zhuǎn)換為字符串
string dateTimeNow = stringBuilderTime.ToString();
// 現(xiàn)在的時間是:2024-06-15 18:13:19
// 今天是星期: Saturday
Console.WriteLine(dateTimeNow);
3.2、追加格式:
AppendFormat 方法允許我們將字符串所需的格式作為輸入傳遞。// 創(chuàng)建可變字符串對象
StringBuilder stringBuilderTime = new StringBuilder("現(xiàn)在的時間是:");
// 加終止符
stringBuilderTime.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
// 加終止符
stringBuilderTime.AppendLine();
// 使用格式化追加
stringBuilderTime.AppendFormat("今天是星期: {0}", DateTime.Now.DayOfWeek);
// 轉(zhuǎn)換為字符串
string dateTimeNow = stringBuilderTime.ToString();
// 現(xiàn)在的時間是:2024-06-15 18:13:19
// 今天是星期: Saturday
Console.WriteLine(dateTimeNow);
4、插入:
Insert 方法將指定對象的字符串插入到 StringBuilder 實例中的指定字符位置。// 定義變量
string name = "李明,";
// 創(chuàng)建可變字符串對象
StringBuilder stringBuilder= new StringBuilder("您好!");
// 在 StringBuilder 實例的0位置開始插入變量的值
stringBuilder.Insert(0, name);
// 輸出 李明,您好!
Console.WriteLine(stringBuilder.ToString());
5、替換:
Replace 方法將 StringBuilder實例中出現(xiàn)的所有指定字符或字符串替換為其他的指定字符或字符串。// 創(chuàng)建可變字符串對象
StringBuilder stringBuilder = new StringBuilder("李明,您好!");
// 替換
stringBuilder.Replace("李明", "趙小山");
// 輸出 趙小山,您好!
Console.WriteLine(stringBuilder.ToString())
6、移除:
Remove 方法從 StringBuilder 中刪除預(yù)定數(shù)量的字符。開始索引和要刪除的字符數(shù)是輸入?yún)?shù)。// 創(chuàng)建可變字符串對象
StringBuilder stringBuilder = new StringBuilder("李明,您好!");
// 從 StringBuilder 第3個字符開始移除3個字符
stringBuilder.Remove(3,3);
// 輸出
Console.WriteLine(stringBuilder.ToString());
7、清除:
Clear 方法用于刪除 StringBuilder 對象的所有字符。string name = "李明,";
// 創(chuàng)建可變字符串對象
StringBuilder stringBuilder= new StringBuilder("您好!");
// 在 StringBuilder 實例的0位置開始插入變量的值
stringBuilder.Insert(0, name);
// 刪除所有字符
stringBuilder.Clear();
區(qū)別
字符集合可以使用字符串和 StringBuilder 進行保存或存儲。C# 的 string 與 StringBuilder 之間存在一些差異。1、string 創(chuàng)建后不可改變,如改變則為新實例;StringBuilder 創(chuàng)建后可改變。2、在處理大字符串字符串時,StringBuilder 優(yōu)于 string。否則可以忽略不計。3、命名空間不同,StringBuilder 在 System.Text;string 在 System.String。
小結(jié)
以上是 StringBuilder 的用法全部內(nèi)容及與 String 的區(qū)別,希望對大家了字符的處理帶來一些幫助。
該文章在 2024/7/24 23:06:12 編輯過