前言:
目前兄弟们对“c语言数组对齐”大致比较讲究,小伙伴们都需要学习一些“c语言数组对齐”的相关知识。那么小编在网上网罗了一些有关“c语言数组对齐””的相关知识,希望咱们能喜欢,各位老铁们快快来了解一下吧!在LED屏显示经常出现由于姓名长度不固定,造成各行文字显示不对齐,整体不美观。可以通过判断字符串的长度来补充空格进行对齐,但由于在C#语言中,汉字与数字所占的长度是一样,无法直接用length进行判断。
方法一:将已有字符串组织成新字符串时填充
由于某一个字段,包含有汉字和数字。而一个汉字是两位占位符的大小,如果单从字符串长度来看,一个汉字的长度为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;}
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #c语言数组对齐