C 語言之「中英文混合字串對齊」的方法

2022-09-16 11:54:12 字數 849 閱讀 8241

方法一:將已有字串組織成新字串時填充

由於某乙個字段,包含有漢字和數字。而乙個漢字是兩位佔位符的大小,如果單從字串長度來看,乙個漢字的長度為1。假如按乙個包含漢字字串長度就等於佔位符大小(如果只包含字母和數字的字串這樣計算是對的)來計算的話,乙個漢字卻等於乙個佔位(顯然是錯誤的),這樣就會出現問題了,欄位就無法對齊了。因為對齊是以佔位大小為標準的。

比如:name欄位,string name="中國人123";   那麼name.length=6。如果以 encoding.getencoding("gb2312").getbytes(name).length=9。假設name欄位規定大小為12,不足字串的可用空格來填充。填充name欄位的長度為12,這時就需要增加3個空格來充滿這個字段,而不是6個空格。

解決辦法:string name=name+new  string(' ',12-encoding.getencoding("gb2312").getbytes(name).length);

方法二:擴充套件string.padleft和string.padright

private string padleftex(string str,int totalbytecount,char c)             string w = str.padright(totalbytecount - dcount,c);             return w; }

private string padrightex(string str,int totalbytecount,char c)             string w = str.padright(totalbytecount - dcount,c);             return w; }

C 中英文混合字串對齊

private static string padrightex string str,int totalbytecount string w str.padright totalbytecount dcount return w 這段 來自 的改進。採用utf 8 coding.getbyteco...

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...