前言
本文整理 C# 常用集合類別(Queue、Stack、Dictionary/Hashtable)與字串處理(String、StringBuilder、Regex)的核心成員與用法,適合作為開發時的快速參考卡。
一、佇列
| 方法 | 說明 |
Enqueue(T) | 將物件加入佇列尾端 |
Dequeue() | 移除並回傳佇列開頭物件 |
Peek() | 檢視佇列開頭物件不移除 |
二、堆疊
| 方法 | 說明 |
Push(T) | 壓入堆疊頂端 |
Pop() | 移除並回傳堆疊頂端物件 |
Peek() | 檢視堆疊頂端物件不移除 |
Count | 取得元素數量(屬性,非方法) |
Clear() | 移除所有元素 |
CopyTo(Array, int) | 複製到陣列指定位置 |
三、字典 / 雜湊表
| 成員 | 說明 |
Keys | 取得所有鍵的集合 |
Values | 取得所有值的集合 |
Count | 元素數量 |
Clear() | 清空 |
Contains(key) | 是否包含指定鍵 |
ContainsKey(key) | 同 Contains(語意更清晰) |
this[key] | 索引器:取得/設定值 |
Add(key, value) | 新增鍵值對 |
GetEnumerator() | 回傳迭代器 |
建議:新專案優先使用泛型 Dictionary<TKey, TValue>,效能與型別安全優於 Hashtable。
四、字串核心操作
1. 靜態方法
string.Compare(s1, s2) // 區分大小寫比較
string.Compare(s1, s2, true) // 不區分大小寫
string.Concat(s1, s2) // 串接
string.Format("{0:C}", 1234.5) // 格式化
2. 實例方法
s.ToLower() / s.ToUpper() // 大小寫轉換
s.Trim() // 移除首尾空白
s.Substring(start, length) // 取子字串
s.IndexOf("substr") // 首次出現位置
s.LastIndexOf("substr") // 最後出現位置
s.StartsWith("prefix") // 是否以...開頭
s.EndsWith("suffix") // 是否以...結尾
s.Replace("old", "new") // 取代
s.Split(new char[] { ',', ' ' }) // 分割
s.Insert(index, "str") // 插入
s.PadLeft(10, '0') // 左補字元
s.Remove(start, count) // 移除
3. 字串比較最佳實踐
// 推薦:明確指定比較規則
s1.Equals(s2, StringComparison.OrdinalIgnoreCase)
// 不推薦:s1 == s2(預設 Ordinal,但語意不明確)
五、逐字字串與複製
string path = @"C:\Data\Test"; // @ 前綴:不轉義反斜線
string copy = string.Copy(original); // 深層複製
string alias = original; // 參考複製
六、StringBuilder:高效字串建構
var sb = new StringBuilder();
sb.Append("Hello");
sb.AppendLine(" World");
sb.AppendFormat("Count: {0}", 42);
string result = sb.ToString();
- 適用於大量串接或迴圈中累加字串
- 內部維護字元緩衝區,避免頻繁配置記憶體
七、正則表達式基礎
using System.Text.RegularExpressions;
var regex = new Regex(@"\d{3}-\d{4}"); // 編譯模式
Match m = regex.Match("Tel: 02-1234567");
if (m.Success) Console.WriteLine(m.Value); // 02-1234
// 分割字串
string[] parts = regex.Split("A1B2C3"); // 依數字分割
總結
熟練掌握集合與字串 API,能大幅減少樣板程式碼並提升效能。建議將本筆記加入書籤,遇到「如何分割字串?」、「Dictionary 如何安全取值?」等問題時快速查閱。