关于字符串对齐的问题

今天碰到一个打印时的模版格式的问题:
要打印出来的字符串对不齐,开始是想法是正确的,但没做出来,呵呵,经验有限。
后到网上找到一个,试了下,不错,能达到想要的效果。
字符串中含有字母,数字,汉字等不统一的字符。函数如下:

 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>

 9        public static string StrFormat(string s, int width)
10        {
11            Encoding code = Encoding.GetEncoding("GB18030");
12
13            byte[] bs = code.GetBytes(s);
14
15            bool leftAlign = (width < 0 ? true : false);
16
17            if (width < 0
18                width = -width;
19
20            if (bs.Length >= width) 
21                return s;
22
23            if (leftAlign) 
24                return s.PadRight(width - bs.Length + s.Length);
25
26            return 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
posted @ 2008-04-19 15:16  Simmy.卧龙先生  阅读(494)  评论(0编辑  收藏  举报