内插字符串中的最佳 Environment.Newline

Optimal Environment.Newline in interpolated string

我想在一个字符串中插入多个新行,所以我使用了一个内插字符串作为我选择的格式机制,这应该非常快。

示例:

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";

您可以编写一个简单的辅助方法来获取重复的字符串,然后调用它:

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";

也许不是最优雅的解决方案,但您可以从内插字符串中调用方法。该方法可以return指定数量的新行。

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";

Linq 可以做到这一点:

var fifteenNewlines = string.Concat(Enumerable.Repeat(Environment.NewLine, 15));