C# 計算字符串在控制台中的顯示長度¶
警告
您當前查看的頁面是未經授權的轉載!
如果當前版本排版錯誤,請前往查看最新版本:http://www.cnblogs.com/qin-nz/p/csharp-calculate-string-display-length.html
提示
更新時間:2016年01月09日。
如果你在寫控制台應用,有的時候需要輸出中英文,同時還要保證文字能夠對齊。 這個時候,就需要計算一個字符串需要占用幾個長度的字符。
通常情況下,英文數字占用1個單位寬度,而漢字需要2個單位寬度。 接下來的任務就是怎么判斷某個字符是中文還是英文了。
不考慮制表符的情況¶
考慮不同的字符集,對於存儲所需要的Byte數量的不同,不難發現 GBK
字符集中,中文需要兩個字節,英文需要一個字節。 因此可以使用下面的代碼來求出字符所占的顯示長度。
System.Text.Encoding.GetEncoding("GBK").GetByteCount(str);
考慮制表符的情況¶
如果我們的字符串中包含 '\t'
,這時候就要單獨處理了,制表符產生的顯示長度取決於之前的字符串顯示到哪里了。 下面的代碼應該可以解決這個問題。
using System.Text;
public static class StringExtension
{
public static int DisplayLength(this string str)
{
int lengthCount = 0;
var splits = str.ToCharArray();
for (int i = 0; i < splits.Length; i++)
{
if (splits[i] == '\t')
{
lengthCount += 8 - lengthCount % 8;
}
else
{
lengthCount += Encoding.GetEncoding("GBK").GetByteCount(splits[i].ToString());
}
}
return lengthCount;
}
C# 計算字符串在控制台中的顯示長度 由 勤奮的小孩 創作,采用 知識共享 署名-相同方式共享 4.0 國際 許可協議進行許可。
本許可協議授權之外的使用權限可以從 http://space.cnblogs.com/msg/send/qin-nz 處獲得。