C#语言之“中英文混合字符串对齐”的方法
參考自:(1)http://www.cnblogs.com/cnluoke/articles/1213398.html
???????????(2)http://www.cnblogs.com/sql4me/archive/2009/11/16/1603996.html
方法一:將已有字符串組織成新字符串時填充
由于某一個字段,包含有漢字和數字。而一個漢字是兩位占位符的大小,如果單從字符串長度來看,一個漢字的長度為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)
{
??????????? Encoding coding = Encoding.GetEncoding("gb2312");
??????????? int dcount = 0;
??????????? foreach (char ch in str.ToCharArray())
??????????? {
??????????????? if (coding.GetByteCount(ch.ToString()) == 2)
??????????????????? dcount++;
??????????? }
??????????? string w = str.PadRight(totalByteCount - dcount,c);
??????????? return w;
}
private string PadRightEx(string str,int totalByteCount,char c)
{
??????????? Encoding coding = Encoding.GetEncoding("gb2312");
??????????? int dcount = 0;
??????????? foreach (char ch in str.ToCharArray())
??????????? {
??????????????? if (coding.GetByteCount(ch.ToString()) == 2)
??????????????????? dcount++;
??????????? }
??????????? string w = str.PadRight(totalByteCount - dcount,c);
??????????? return w;
}
轉載于:https://www.cnblogs.com/sunzhongzheng/p/4064730.html
總結
以上是生活随笔為你收集整理的C#语言之“中英文混合字符串对齐”的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net(C#)写SQL语句技巧
- 下一篇: iis5.1/6.0/7.0+ 配置ur