是否有一种简单的方法来返回重复X次的字符串?

我试图根据项目深度在字符串之前插入一定数量的缩进,并且我想知道是否有办法返回重复X次的字符串。例:


string indent = "---";

Console.WriteLine(indent.Repeat(0)); //would print nothing.

Console.WriteLine(indent.Repeat(1)); //would print "---".

Console.WriteLine(indent.Repeat(2)); //would print "------".

Console.WriteLine(indent.Repeat(3)); //would print "---------".


小怪兽爱吃肉
浏览 399回答 3
3回答

富国沪深

如果您使用的是.NET 4.0,则可以string.Concat与一起使用Enumerable.Repeat。int N = 5; // or whateverConsole.WriteLine(string.Concat(Enumerable.Repeat(indent, N)));否则,我会接受亚当的回答。我通常不建议使用Andrey的答案的原因仅仅是,该ToArray()调用会引入多余的开销,StringBuilder而Adam提出的方法可以避免这种开销。就是说,至少它不需要.NET 4.0就可以工作。而且它既快捷又容易(如果效率不是您所关注的重点,那也不会杀死您)。

阿波罗的战车

public static class StringExtensions{&nbsp; &nbsp; public static string Repeat(this string input, int count)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if (!string.IsNullOrEmpty(input))&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; StringBuilder builder = new StringBuilder(input.Length * count);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(int i = 0; i < count; i++) builder.Append(input);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return builder.ToString();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; return string.Empty;&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP