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

C# 字串與字元陣列雙向轉換完整指南

     編輯:關於C#

字串 → 字元陣列


string str = "Hello World";
char[] chars = str.ToCharArray();        // 全部字元
char[] sub = str.ToCharArray(2, 3);      // 從索引 2 取 3 個字元 ('l','l','o')

// 存取單一字元 (無需轉陣列)
char c = str[2];        // 'l'
char c2 = str[^1];      // 最後一個字元 (C# 8 索引運算子)

字元陣列 → 字串


char[] chars = { 'H', 'e', 'l', 'l', 'o' };
string s1 = new string(chars);              // 全部
string s2 = new string(chars, 1, 3);        // 從索引 1 取 3 個 -> "ell"
string s3 = new string('*', 10);            // 重複字元 -> "**********"
string s4 = new string(chars, 0, chars.Length); // 等同 s1

StringBuilder 高效建構字串


var sb = new StringBuilder();
sb.Append('H').Append('e').Append("llo");
sb.Append(chars, 0, chars.Length);
string result = sb.ToString();

字元陣列與 Span<char> (零複製切片)


char[] buffer = new char[100];
int len = ReadIntoBuffer(buffer); // 假設讀取 10 字元
ReadOnlySpan slice = buffer.AsSpan(0, len); // 無配置、無複製
string s = slice.ToString(); // 需要字串時才配置
// 或直接處理 Span (搜尋、比較、解析)
int idx = slice.IndexOf('e');

編碼轉換:字串 ↔ 位元組陣列


string text = "中文測試";
byte[] utf8 = Encoding.UTF8.GetBytes(text);
byte[] big5 = Encoding.GetEncoding("big5").GetBytes(text);
string back = Encoding.UTF8.GetString(utf8);

// 串流式編碼/解碼 (大資料)
using var ms = new MemoryStream();
using (var writer = new StreamWriter(ms, Encoding.UTF8, leaveOpen: true))
    writer.Write(text);
byte[] data = ms.ToArray();

常見陷阱

錯誤寫法問題正確寫法
string s = chars.ToString();回傳型別名稱 "System.Char[]"new string(chars)
char c = str[5]; (長度 5)IndexOutOfRangeException先檢查 str.Length > 5
修改字串字元 str[0] = 'a';字串不可變,編譯錯誤用 StringBuilder 或 char[] 修改後 new string()
假設 char 為 1 byteC# char 為 UTF-16 (2 bytes),補字元佔 2 char處理 Unicode 時使用 StringInfo 或 Rune (C# 8+)

效能建議

  • 頻繁拼接字串 → StringBuilder。
  • 高效能解析/搜尋 → Span<char> / MemoryExtensions 零複製操作。
  • 大量字串建構 → string.Create (C# 9+,配合 delegate 直接寫入緩衝區)。
  • 避免 ToCharArray() 後又 new string() 往返,除非必要。

掌握字串與字元陣列的轉換、切片、編碼操作,即能高效處理文字資料。

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