String.Format使用ToShortDateString和String无法正确对齐

时间:2014-01-01 00:49:56

标签: c# asp.net asp.net-mvc-4

这一行

TitleDate = string.Format("Date: {0, -10}  Title: {1, 10}" ,c.Date.ToShortDateString() ,c.Title)

显示:

Date: 8/26/2007 Title: A Title
Date: 10/13/2011 Title: A Title
Date: 11/11/2012 Title: A Title
Date: 3/1/2001 Title: A Title

我正在尝试

Date: 8/26/2007  Title: A Title
Date: 10/13/2011 Title: A Title
Date: 11/11/2012 Title: A Title
Date: 3/1/2001   Title: A Title

这些值显示在树视图的文本字段中

3 个答案:

答案 0 :(得分:2)

我假设您在浏览器中呈现字符串时会遇到此问题。

默认情况下,浏览器会用一个空格替换多个空白字符,例如选项卡后跟两个空格将被渲染,就像只有一个空格一样。

必须通知浏览器您要在此字符串中保留所有空格。

例如,您可以使用 

替换要呈现的字符串中的所有空格字符
TitleDate = string.Format("Date: {0, -10}  Title: {1, 10}" ,c.Date.ToShortDateString(), c.Title);
TitleDate.Replace(" ", " ");

此外,正如@AlexeiLevenkov在评论中指出的那样,您必须确保使用固定宽度的字体呈现文本。

答案 1 :(得分:2)

尝试使用PadRight方法

有三种可能性,你的日期字符串可能有8,9或10个字符。所以这是一个可能的(我猜),但不是优雅的解决方案:

string date = c.Date.ToShortDateString();
int lenght = date.Length;
int whiteSpace = 0;
switch (length)
        {
            case 8:
                whitespace = 6;
                break;
            case 9:
                whitespace = 5;
                break;
            case 10:
                whitespace = 4;
                break;
        }

TitleDate = string.Format("Date: {0}  Title: {1}" ,date.PadRight(whiteSpace,' '), c.Title);
TitleDate = TitleDate.Replace(" ","&nbsp");

或者您可以使用自定义DateTime Format并使其更优雅:

TitleDate = string.Format("Date: {0}  Title: {1}" ,c.Date.ToString("dd/MM/yyyy") ,c.Title)

答案 2 :(得分:1)

您可以使用HTML格式。 使用CSS传递类设置将是一个好主意