我想在字符串中插入多行新内容,因此我选择了内插字符串作为格式机制的选择,
示例:
string mystring = $"one line{Environment.NewLine}{Environment.NewLine}{Environment.NewLine}another line{Environment.NewLine}end";
现在可以正常工作,但是如何更好地在插值字符串中插入多个Environment.Newline
;例如,如果我想15则很麻烦。
我知道string.Replace(
,string.Format()
和串联Environment.NewLine + Environment.NewLine + Environment.NewLine
以及带有空行的文字字符串@"stuff"
,但这不是问题(替代),而是如何插入倍数,例如我的
string mystring = $"one line{Environment.NewLine(3)}another line{Environment.NewLine}end text";
答案 0 :(得分:2)
您可以编写一个简单的辅助方法来获取重复的字符串,然后调用该方法:
static string Repeat(string input, int count)
{
var result = new StringBuilder();
for (var i = 0; i < count; i++) result.Append(input);
return result.ToString();
}
string mystring =
$"one line{Repeat(Environment.NewLine, 3)}another line{Environment.NewLine}end";
如果不想显式调用另一个函数,则可以编写扩展方法:
public static class Extensions
{
public static string Repeat(this string input, int count)
{
if (input == null) return null;
if (count < 1) return string.Empty;
var result = new StringBuilder();
for (var i = 0; i < count; i++) result.Append(input);
return result.ToString();
}
}
然后语法更简单:
string mystring =
$"one line{Environment.NewLine.Repeat(3)}another line{Environment.NewLine}end";
答案 1 :(得分:2)
Linq可以做到这一点:
var fifteenNewlines = string.Concat(Enumerable.Repeat(Environment.NewLine, 15));
答案 2 :(得分:1)
也许不是最优雅的解决方案,但是您可以从插值字符串中调用方法。该方法可以返回指定数量的新行。
private string NewLines(int lines)
{
return new StringBuilder().Insert(0,$"{Environment.NewLine}, lines").ToString();
}
然后打电话
string mystring = $"one line{NewLines(3)}another line{NewLines(1)}end text";