首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 字元與字串基礎:char、string、Unicode、字串操作核心 API 完整指南

     編輯:關於C#

char vs string 核心差異

特性char (System.Char)string (System.String)
型別分類實值型別 (struct)參考型別 (class)
大小2 bytes (UTF-16 code unit)動態 (20+2n bytes)
不可變性N/A (單一值)是 (操作產生新字串)
Null 能力不可為 null可為 null
字面常值'A'"Hello"
索引存取N/As[i] 唯讀傳回 char

字元分類與 Unicode 類別

char c = '中';
char.IsDigit(c);       // false
char.IsLetter(c);      // true
char.IsLetterOrDigit(c);
char.IsUpper(c);
char.IsLower(c);
char.IsWhiteSpace(c);
char.IsControl(c);
char.IsPunctuation(c);
char.IsSymbol(c);
char.GetUnicodeCategory(c); // UnicodeCategory.OtherLetter

字串核心操作 API

分類方法說明
查詢IndexOf/LastIndexOf子字串/字元位置
Contains/StartsWith/EndsWith存在/前綴/後綴檢查
Compare/CompareTo/Equals序數/文化特性比較
Substring擷取子字串 (新配置)
轉換ToUpper/ToLower/ToUpperInvariant大小寫轉換
Trim/TrimStart/TrimEnd移除首尾空白/指定字元
Replace取代 (全域、不支援 Regex)
Insert/Remove插入/移除指定位置
分割/合併Split分割為陣列
Join合併陣列/集合
Concat連接多字串
格式化Format複合格式
插值 $""現代語法糖

高效能字串操作 (Span/Memory)

// 傳統 Substring 配置新字串
string sub = longString.Substring(10, 20);

// Span 切片:零配置、堆疊分配 (C# 7.2+)
ReadOnlySpan slice = longString.AsSpan(10, 20);
// 可直接傳遞給接受 Span 的 API (如 int.TryParse)

// StringBuilder 批次建構
var sb = new StringBuilder(1024);
for (int i = 0; i < 1000; i++) sb.AppendLine(i.ToString());
string result = sb.ToString();

// String.Create (C# 9+) 直接寫入緩衝區
string created = String.Create(10, 42, (span, seed) => {
    for (int i = 0; i < 10; i++) span[i] = (char)('A' + (seed + i) % 26);
});

字串比較最佳實務

// 序數比較 (快速、區分大小寫、適合識別碼/路徑/內部邏輯)
str1.Equals(str2, StringComparison.Ordinal);
str1.Equals(str2, StringComparison.OrdinalIgnoreCase);

// 文化特性比較 (使用者顯示、排序)
str1.Equals(str2, StringComparison.CurrentCulture);
str1.Equals(str2, StringComparison.CurrentCultureIgnoreCase);

// 固定文化特性 (序列化、日誌、協定)
str1.Equals(str2, StringComparison.InvariantCulture);

// 避免預設 Equals/== (使用 CurrentCulture,行為隨系統語系變動)

常見效能陷阱

  • 迴圈中 s += x → 用 StringBuilder 或 String.Create
  • 大量 Substring → 用 Span 切片
  • ToUpper() 比較 → 用 OrdinalIgnoreCase
  • 字串插值格式化熱路徑 → 考慮 DefaultInterpolatedStringHandler 自訂

char範例
string操作1
string操作2
Unicode分類

本文對應《叩響 C# 之門》第 2.3 節字符和字符串教學內容

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved