private static string padrightex(string str, int totalbytecount)
string w = str.padright(totalbytecount - dcount);
return w;
}
這段**來自
的改進。
採用utf-8
coding.getbytecount(ch.tostring())
算出來可能大於2,所以此處進行了改動。
原理:認為乙個中文佔2個單位螢幕長度,乙個英文佔1個單位螢幕長度。
str.padright(int totalwidth)
這個函式的totalwidth引數指的是在str字串右側填充完空格之後str總的應當占有的長度。
注意這個總的應當占有的長度是字元數,1個中文為1個字元,乙個英文為1個字元,所以假設str包含dcount個中文,b個英文,然後需要在str右側補充c個空格(空格螢幕寬度是1個單元).
那麼str字串右側補充c個空格之後:
totalwidth=dcount+b+c;
而str補充c個空格之後,實際占得螢幕寬度(也就是我們希望乙個字串佔的螢幕寬度totalbytecount )
totalbytecount =2*dcount+b+c;
因此,計算totalwidth:
totalwidth=totalbytecount -dcount=希望占得螢幕寬度-中文字元個數;
也就是下面這行**的原因:
string w = str.padright(totalbytecount - dcount);
C 字串中英文對齊
stringbuilder str new stringbuilder 樓盤名稱 總數 r n 綠地海外灘中心 new string 25 encoding.default.getbytes 綠 地海外灘中心 length 10 樓盤名稱 總數 r n 上海醫藥大廈 new string 25 en...
C 中英文混合字串擷取函式
一 截斷字串 最大長度 原字串 public static string cutstr int maxlength,string str for int i temp.length i 0 i return 二private string getbytestring string center,in...
Django 擷取中英文混合字串
在列表顯示的時候,我們常常要擷取文章標題的長度,python擷取字串,本來很簡單的,但是中文和英文的寬度不一樣,在頁面看起來長度就差很遠了 length7 這是中文長度七 粗略來算 是粗略哦 乙個中文字元的寬度大概等於兩個英文本元的寬度。乙個中文字元的utf8編碼長度為3,gbk為2 所以將使用gb...