目前我有一个带有一些行的 StringBuilder
StringBuilder foo = new StringBuilder()
.AppendLine("- one")
.AppendLine("- two")
.AppendLine("- three");
我想为每一行设置 "- "
字符。伪代码:
StringBuilder foo = new StringBuilder()
.SetNewLineInitialCharacter("- ")
.AppendLine("one")
.AppendLine("two")
.AppendLine("three");
我不认为 Insert
或 Replace
是我正在寻找的方法。我知道循环可以解决问题,但没有必要,我只是想问一下是否有办法一次性设置 "- "
。
最佳答案
您可以使用包装的 StringBuilder 来做到这一点:
public class StringBuilderWrapper
{
private readonly string _prefix;
private readonly StringBuilder _builder;
public StringBuilderWrapper(StringBuilder builder, string prefix)
{
_prefix = prefix;
_builder = builder;
}
public StringBuilderWrapper AppendLine(string line)
{
_builder.Append(_prefix);
_builder.AppendLine(line);
return this;
}
public override string ToString()
{
return _builder.ToString();
}
}
为了方便起见,您可以从扩展方法中返回:
public static class StringBuilderExtensions
{
public static StringBuilderWrapper SetNewLineInitialCharacter(this StringBuilder builder, string prefix)
{
return new StringBuilderWrapper(builder, prefix);
}
}
然后这样调用它:
var output = new StringBuilder()
.SetNewLineInitialCharacter("- ")
.AppendLine("one")
.AppendLine("two")
.AppendLine("three");
var outputString = output.ToString();
哪些输出:
- one
- two
- three
如果没有扩展方法,你可以这样调用它:
var output = new StringBuilderWrapper(new StringBuilder(), "- ")
.AppendLine("one")
.AppendLine("two")
.AppendLine("three");
关于c# - stringbuilder 将初始字符添加到每个新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53429820/