C# 計算字符串在控制台中的顯示長度


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 處獲得。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM