日期:2014-05-18  浏览次数:20359 次

C#中怎么设置多个字符串同样的宽度?
我想让7个字符串3行3列的显示并左对齐,字符串长度不一,不足7个用空格不足。
如:
111111   111111   111111
aaaa       显示并左对齐   aa
a
现在的问题是显示的时侯汉字的宽度跟英文字母的宽度不一致,导致显示的时侯无法左对齐。我现在的做法是:
                                System.Text.StringBuilder   sb   =   new   StringBuilder();
                               
                                for   (int   i   =   1;   i   <=   items.Count;   i++)
                                {
                                        if   (i   %   3   ==   0)
                                        {
                                                sb.Append(items[i-1]+ "\n ");
                                        }
                                        else
                                        {
                                                sb.Append(items[i-1].PadRight(7,   '   '));
                                        }
                                }
                                m_ApplyData   =   sb.ToString();
--------------------------------
有谁能帮帮我呢???

------解决方案--------------------
使用格式化字符串,含义有点象 C 的 printf

StringBuilder sb = new StringBuilder();
sb.AppendFormat( "{0,-7} ", "123 ").AppendFormat( "{0,-7} ", "4567 ").AppendFormat( "{0,-7} ", "89 ").AppendLine();
// ...
------解决方案--------------------
格式项语法
所有格式项都采用下面的形式。

{index[,alignment][:formatString]}

必须使用成对的大括号(“{”和“}”)。

格式项组件
格式项由下面的组件构成。

索引组件
强制“索引”组件(也叫参数说明符)是一个从 0 开始的数字,可标识值列表中对应的元素。也就是说,参数说明符为 0 的格式项格式化列表中的第一个值,参数说明符为 1 的格式项格式化列表中的第二个值,依次类推。

通过指定相同的参数说明符,多个格式项可以引用值列表中的同一个元素。例如,通过指定类似于“{0:X} {0:E} {0:N}”的源字符串,可以将同一个数值格式化为十六进制、科学表示法和数字格式。

每一个格式项都可以引用所有的参数。例如,如果有三个值,则可以通过指定类似于“{1} {0} {2}”的源字符串来格式化第二、第一和第三个值。格式项未引用的值会被忽略。如果参数说明符指定了超出值列表范围的项,将导致运行时异常。

对齐组件
可选的“对齐”组件是一个带符号的整数,指示首选的格式化字段宽度。如果“对齐”值小于格式化字符串的长度,“对齐”会被忽略,并且使用格式化字符串的长度作为字段宽度。如果“对齐”为正数,字段的格式化数据为右对齐;如果“对齐”为负数