. net String。格式方法允许将字符串放置在固定长度的字符串中的固定位置。

"           String Goes Here"
"     String Goes Here      "
"String Goes Here           "

使用.NET是如何做到这一点的?

编辑-我已经尝试格式/左/右PadRight死亡。它们不起作用。我不知道为什么。最后我写了自己的函数来做这个。

编辑-我犯了一个错误,在格式说明符中使用了冒号而不是逗号。应该是“{0,20}”。

感谢所有精彩而正确的回答。


当前回答

我发布了一篇CodeProject文章,可能就是你想要的。

参见:间接宽度和样式格式化的c#方法。

基本上它是一个方法,FormatEx,它的作用类似于String。格式,除了它允许居中对齐修饰符。

FormatEx("{0,c10}", value);

意味着将varArgs[0]的值置于10个字符宽字段的中心,如果需要额外的填充空间,则向右倾斜。

FormatEx("{0,c-10}", value);

意味着将varArgs[0]的值置于10个字符宽字段的中心,如果需要额外的填充空间,则向左倾斜。

编辑:在内部,它是Joel的PadCenter与一些解析的组合,以重新构造格式和varArgs调用String。格式,做你想要的。

杰西

其他回答

至少,第一个和最后一个可以使用以下语法:

String.Format("{0,20}", "String goes here");
String.Format("{0,-20}", "String goes here");

试试这个:

"String goes here".PadLeft(20,' ');
"String goes here".PadRight(20,' ');

对于中心,获取字符串的长度,并使用必要的字符进行左padleft和右padright操作

int len = "String goes here".Length;
int whites = len /2;
"String goes here".PadRight(len + whites,' ').PadLeft(len + whites,' ');

这将给你你所需要的字符串:

string s = "String goes here";
string lineAlignedRight  = String.Format("{0,27}", s);
string lineAlignedCenter = String.Format("{0,-27}",
    String.Format("{0," + ((27 + s.Length) / 2).ToString() +  "}", s));
string lineAlignedLeft   = String.Format("{0,-27}", s);

我发布了一篇CodeProject文章,可能就是你想要的。

参见:间接宽度和样式格式化的c#方法。

基本上它是一个方法,FormatEx,它的作用类似于String。格式,除了它允许居中对齐修饰符。

FormatEx("{0,c10}", value);

意味着将varArgs[0]的值置于10个字符宽字段的中心,如果需要额外的填充空间,则向右倾斜。

FormatEx("{0,c-10}", value);

意味着将varArgs[0]的值置于10个字符宽字段的中心,如果需要额外的填充空间,则向左倾斜。

编辑:在内部,它是Joel的PadCenter与一些解析的组合,以重新构造格式和varArgs调用String。格式,做你想要的。

杰西

你已经学过左键和右键了。这将填补缺失的PadCenter。

public static class StringUtils
{
    public static string PadCenter(this string s, int width, char c)
    {
        if (s == null || width <= s.Length) return s;

        int padding = width - s.Length;
        return s.PadLeft(s.Length + padding / 2, c).PadRight(width, c);
    }
}

提醒自己:别忘了更新自己的简历:“有一天,我甚至修正了Joel Coehoorn的代码!”, - d哔叽