今天碰到一个打印时的模版格式的问题:
要打印出来的字符串对不齐,开始是想法是正确的,但没做出来,呵呵,经验有限。
后到网上找到一个,试了下,不错,能达到想要的效果。
字符串中含有字母,数字,汉字等不统一的字符。函数如下:
1/// <summary>
2/// 把一个“unicode字符串”格式化为全角字符占2个位置的“普通字符串”
3/// width小于0 表示左对齐,右边填空格
4/// width大于0 表示右对齐,左边填空格
5/// </summary>
6/// <param name="s"></param>
7/// <param name="width"></param>
8/// <returns></returns>
9public static string StrFormat(string s, int width)
10{
11Encoding code = Encoding.GetEncoding("GB18030");
12
13byte[] bs = code.GetBytes(s);
14
15bool leftAlign = (width < 0 ? true : false);
16
17if (width < 0)
18width = -width;
19
20if (bs.Length >= width)
21return s;
22
23if (leftAlign)
24return s.PadRight(width - bs.Length + s.Length);
25
26return s.PadLeft(width - bs.Length + s.Length);
27}
28
1对齐格式一:如下:
2一票通UL初始化卡
3一票通1K初始化卡
4一卡通S70非记名成人卡
5一卡通CPU非记名成人卡
6一卡通S50非记名成人卡
7一卡通S70记名成人卡
8一卡通S70定值卡
9一卡通S70福利卡
10一卡通S70纪念卡
11一卡通S70老人卡
12一卡通S70大钱包扣款测试专用卡
13一卡通S70学生卡1
14一卡通S70学生卡2
15一卡通S70学生卡3
16一卡通S70定期卡1
17一卡通S70定期卡2
18一卡通S70地铁员工卡
19一卡通S70计次卡1
20一卡通S70计次卡2
21一卡通S70奥运专用卡1
22一卡通S70奥运专用卡2
23
24对齐格式二,如下:
25
26一票通UL初始化卡
27一票通1K初始化卡
28一卡通S70非记名成人卡
29一卡通CPU非记名成人卡
30一卡通S50非记名成人卡
31一卡通S70记名成人卡
32一卡通S70定值卡
33一卡通S70福利卡
34一卡通S70纪念卡
35一卡通S70老人卡
36一卡通S70大钱包扣款测试专用卡
37一卡通S70学生卡1
38一卡通S70学生卡2
39一卡通S70学生卡3
40一卡通S70定期卡1
41一卡通S70定期卡2
42一卡通S70地铁员工卡
43一卡通S70计次卡1
44一卡通S70计次卡2
45一卡通S70奥运专用卡1
46一卡通S70奥运专用卡2