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

C# 字串操作實用技巧:編碼轉換、長度計算與 StringBuilder 高效拼接

     編輯:關於C語言

編碼與位元組陣列互轉

取得字元編碼值


using System.Text;

// 預設編碼 (ANSI/DBCS,中文環境為 CP950)
byte[] bytes = Encoding.Default.GetBytes("啊"); // 長度 2
int b1 = bytes[0]; // 162 (0xA2)
int b2 = bytes[1]; // 177 (0xB1)

// Unicode (UTF-16LE)
bytes = Encoding.Unicode.GetBytes("啊"); // 長度 2
// bytes[0]=0x55, bytes[1]=0x4A (小端序)

位元組陣列還原字串


// 從 Unicode 位元組還原
bytes = new byte[] { 0x55, 0x4A }; // "啊" 的 UTF-16LE
string s = Encoding.Unicode.GetString(bytes); // "啊"

// 從預設編碼位元組還原
bytes = new byte[] { 0xA2, 0xB1 };
s = Encoding.Default.GetString(bytes); // "啊"

字串長度計算


string s = "iam方槍槍";
int charCount = s.Length;           // 6 (Char 數)
int byteCount = Encoding.Default.GetByteCount(s); // 9 (3 ASCII + 3*2 DBCS)
int byteCountUtf8 = Encoding.UTF8.GetByteCount(s); // 12 (3 ASCII + 3*3 UTF-8)

高效拼接:StringBuilder


var sb = new StringBuilder();
sb.Append("i ");
sb.Append("am ");
sb.Append("方槍槍");
string result = sb.ToString(); // "iam方槍槍"

// 進階:預估容量避免擴展
var sb2 = new StringBuilder(100);
for (int i = 0; i < 1000; i++) sb2.Append(i).Append(',');

常用編碼類別速查

屬性/方法說明
Encoding.Default系統預設 ANSI 編碼 (中文為 CP950/Big5)
Encoding.UTF8UTF-8 (BOM 可用 new UTF8Encoding(true))
Encoding.UnicodeUTF-16LE (小端序)
Encoding.BigEndianUnicodeUTF-16BE
Encoding.GetEncoding("gb2312")簡體中文常用編碼
Encoding.GetBytes(str)字串 → 位元組陣列
Encoding.GetString(bytes)位元組陣列 → 字串
Encoding.GetByteCount(str)取得位元組長度 (不配置陣列)

實用小技巧

移除 BOM


var utf8NoBom = new UTF8Encoding(false);
byte[] bytes = utf8NoBom.GetBytes("Hello");

偵測編碼


// 簡易偵測:嘗試以 UTF-8 解碼,失敗則回退 Default
public string DetectAndDecode(byte[] data)
{
    try { return Encoding.UTF8.GetString(data); }
    catch { return Encoding.Default.GetString(data); }
}

Base64 編碼/解碼


string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes("Hello"));
string original = Encoding.UTF8.GetString(Convert.FromBase64String(base64));
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved