Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过添加空白设置文本格式_C#_String - Fatal编程技术网

C# 通过添加空白设置文本格式

C# 通过添加空白设置文本格式,c#,string,C#,String,我正在尝试用空格格式化字符串。 所有字符串通常看起来像 01. Anton 30p 02. Cinderella 20p 03. Thomas 18p 04. Anastacia-Laura 16p 我想格式化每个字符串,使点从同一列开始。 我在那里写道: s = stringUpToName; int addSpacing = 37 - s.Length; for (int i = 0; i < addSpacing; i += 1) s += " "; s += points;

我正在尝试用空格格式化字符串。 所有字符串通常看起来像

01. Anton 30p
02. Cinderella 20p
03. Thomas 18p
04. Anastacia-Laura 16p
我想格式化每个字符串,使点从同一列开始。 我在那里写道:

s = stringUpToName;
int addSpacing = 37 - s.Length;
for (int i = 0; i < addSpacing; i += 1) s += " ";

s += points;
用作零占位符符号以格式化记录的索引/编号
0:00
将为值
1
提供
01

还要记住的是{index[,alignment][:formatString]},其中alignment表示首选的格式化字段宽度。因此,将对齐方式添加到第二项格式
{1,20}
中,可以获得20个字符的右对齐字段宽度。使用负对齐时,字段将左对齐

总格式字符串看起来像
“{0:00}.{1,-20}{2}p”

如果是生成字符串,则可以将其与
String.Format
StringBuilder.AppendFormat
一起使用;如果是将其写入控制台,则可以与
Console.WriteLine一起使用

int index = 1;
string name = "Anton";
int points = 30;
var result = String.Format("{0:00}. {1,-20}{2}p", index, name, points)
// "01. Anton               30p"
用作零占位符符号以格式化记录的索引/编号
0:00
将为值
1
提供
01

还要记住的是{index[,alignment][:formatString]},其中alignment表示首选的格式化字段宽度。因此,将对齐方式添加到第二项格式
{1,20}
中,可以获得20个字符的右对齐字段宽度。使用负对齐时,字段将左对齐

总格式字符串看起来像
“{0:00}.{1,-20}{2}p”

如果是生成字符串,则可以将其与
String.Format
StringBuilder.AppendFormat
一起使用;如果是将其写入控制台,则可以与
Console.WriteLine一起使用

int index = 1;
string name = "Anton";
int points = 30;
var result = String.Format("{0:00}. {1,-20}{2}p", index, name, points)
// "01. Anton               30p"
格式化并使用对齐功能

string[] names = new string[]
{
    "1. Anton 30p",
    "2. Cinderella 20p",
    "3. Thomas 18p",
    "4. Anastacia-Laura 16p"
};

foreach(string s in names)
{
    int lastSpace = s.LastIndexOf(' ');
    int firstSpace = s.IndexOf(' ');
    string result = string.Format("{0,-4}{1,-37}{2,4}", s.Substring(0, firstSpace), s.Substring(firstSpace + 1, lastSpace), s.Substring(lastSpace+1));
    Console.WriteLine(result);

}
请记住,要查看列中精确对齐的输出,您需要使用固定宽度的字体,如Lucida Console或Courier,因为具有可变宽度的字体打印I所使用的像素少于打印W.

String.Format并使用对齐功能

string[] names = new string[]
{
    "1. Anton 30p",
    "2. Cinderella 20p",
    "3. Thomas 18p",
    "4. Anastacia-Laura 16p"
};

foreach(string s in names)
{
    int lastSpace = s.LastIndexOf(' ');
    int firstSpace = s.IndexOf(' ');
    string result = string.Format("{0,-4}{1,-37}{2,4}", s.Substring(0, firstSpace), s.Substring(firstSpace + 1, lastSpace), s.Substring(lastSpace+1));
    Console.WriteLine(result);

}

请记住,要在列中看到精确对齐的输出,您需要使用固定宽度的字体,如Lucida Console或Courier,因为可变宽度的字体打印I比打印W使用更少的像素。

尝试使用

格式(“{0}{1}{2,4}p”, 号码, 名称
点)

尝试使用右对齐数字

格式(“{0}{1}{2,4}p”, 号码, 名称
点)

这不是更好吗?否:/I我编辑了我的问题。这不是更好吗?否:/我编辑了我的问题。你能解释一下吗?我刚刚测试了这个:输出错误。@Saphire抱歉,左对齐字段需要负对齐。Updated你能解释一下吗?我刚刚测试过:输出错误。@Saphire抱歉,左对齐字段需要负对齐。更新