只有累積,沒有奇蹟

2018年8月31日 星期五

[C#] 計算字串的長度方式

摘要:C# 計算字串的長度方式
怕之後年紀大會忘記,趕緊記下來先
.NET Framework 中有內建類別(Encoding )取得字串的長度 
想要取得字串中是否含有中文字串的實際長度,有下列作法 
Ⅰ、Length:取得目前 String 物件中字元的數目,僅計算字串長度(中文 2 byte,英文 1 byte)
Ⅱ、GetByteCount:計算編碼一組字元所產生的位元組數目(判斷多少位元組會編碼一組 Unicode 字元)
Ⅲ、GetBytes:計算解碼位元組序列所產生的字元數目(執行實際的編碼作業)
PS:記得先參考 System.Text 
《範例》
  1. string myString = "讓你媽媽NEW一下";
  2. // Length
  3. Response.Write("Length:" + myString.Length);
  4. // GetByteCount:使用目前系統的編碼方式
  5. Response.Write("GetByteCount:" + Encoding.Default.GetByteCount(myString));
  6. // GetBytes
  7. Response.Write("GetBytes:" + Encoding.Default.GetBytes(myString).Length.ToString());
  8. int myStringCount = 0;
  9. for (int i = 0; i < myString.Length; i++)
  10. {
  11.   byte[] tIntByte = Encoding.Default.GetBytes(myTextBoxText.Substring(i, 1));
  12.   // 中文字
  13.   if (tIntByte.Length == 2)
  14.   {
  15.     //To Do Something
  16.   }
  17.   myStringCount += tIntByte.Length;
  18. }
  19. Response.Write("GetBytes(FOR):" + myStringCount.ToString());
《結果》
另外需要注意的一點,如果你是使用 GetBytes 計算字串長度的話
需要注意網頁編碼的方式,有可能因為編碼方式的不同,使用 GetBytes 時會有不同的結果
所以如果取得的字串長度跟你想像中的有差異,可以檢查看看網頁編碼的方式喔!
《範例》
  1. Response.Write("GetBytes(big5):" + Encoding.GetEncoding("big5").GetBytes(myString).Length.ToString());
  2. Response.Write("GetBytes(utf-8):" + Encoding.GetEncoding("utf-8").GetBytes(myString).Length.ToString());
《結果》
參考:
有問題請多多指教,謝謝 :D

0 意見:

張貼留言

Copyright © 2025 m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com