我有一个多行字符串,我想附加一些多行文字和 保留附加的文本行的缩进。一个例子可能更好地解释了这个问题:
StringBuilder sb = new StringBuilder();
int int1 = 50000;
double double1 = 5800.0;
string test = "Test\r\nSome\r\nMultiline\r\nstuff.";
sb.AppendFormat("{0,8};{1,8};{2}",int1,double1,test);
Console.Write(sb.ToString());
这会给我输出
50000; 5800;Test
Some
Multiline
stuff.
然而,我希望获得的是
50000; 5800;Test
Some
Multiline
stuff.
我知道有办法通过编写自己的功能来处理这个问题,但是我希望StringBuilder类或类似的构造可以帮助我。
答案 0 :(得分:1)
您可以使用System.CodeDom.Compiler.IndentedTextWriter
轻松解决问题。无论如何,如果你必须经常生成源代码,那么值得了解这种类型。
最后,它也是一个System.Text.StringBuilder
,正如演示代码所示:
static void Bar()
{
int int1 = 50000;
double double1 = 5800.0;
string test = "Test\r\nSome\r\nMultiline\r\nstuff.";
StringBuilder sb = new StringBuilder();
StringWriter writer = new StringWriter(sb);
IndentedTextWriter itw = new IndentedTextWriter(writer, new string(' ', 18));
itw.Write("{0,8};{1,8};", int1, double1);
itw.Indent++;
test.Split(new char[] { '\n' }).All(s => { itw.WriteLine(s); return true; });
Console.Write(sb.ToString());
}
答案 1 :(得分:0)
就像评论所说的那样,你大部分时间都要写自己的。但是代码不多:
var sb = new StringBuilder();
int int1 = 50000;
double double1 = 5800.0;
sb.AppendFormat("{0,8};{1,8};");
var indentation = "".PadLeft(sb.Length);
var test = "Test\r\nSome\r\nMultiline\r\nstuff.";
var testLines = test.Split(new[] { "\r\n" }, StringSplitOptions.None);
for (int i=0; i<testLines.Length;i++)
{
if (i > 0)
{
sb.AppendFormat("{0}{1}", "\r\n", indentation);
}
sb.Append(testLines[i]);
}
return sb.ToString();
你可以做一些其他的东西,但是如果你有一个动态的缩进长度,你必须建立你的格式字符串,以包括缩进量,这似乎比它对我的努力更值得。
答案 2 :(得分:-1)
代码:
Console.WriteLine("-------------------------------");
Console.WriteLine("First Name | Last Name | Age");
Console.WriteLine("-------------------------------");
Console.WriteLine(String.Format("{0,-10} | {1,-10} | {2,5}", "Bill", "Gates", 51));
Console.WriteLine(String.Format("{0,-10} | {1,-10} | {2,5}", "Edna", "Parker", 114));
Console.WriteLine(String.Format("{0,-10} | {1,-10} | {2,5}", "Johnny", "Depp", 44));
Console.WriteLine("-------------------------------");
输出:
-------------------------------
First Name | Last Name | Age
-------------------------------
Bill | Gates | 51
Edna | Parker | 114
Johnny | Depp | 44
-------------------------------
源: