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抱歉,左对齐字段需要负对齐。更新