在C#中输出换行的简洁方法

时间:2011-02-28 16:30:19

标签: c# .net

在C ++中,我可以这样做:

cout << "Line 1\nLine 2\n";

在Java中,我可以这样做:

System.out.printf("Line 1%nLine 2%n");

在C#中,我是否真的需要做这些繁琐的事情之一:

Console.WriteLine("Line 1");
Console.WriteLine("Line 2");

Console.Write("Line 1{0}Line 2{0}", Environment.NewLine);

还是有更简洁的方式,这不是特定于平台的?

8 个答案:

答案 0 :(得分:4)

您可以为Environment.NewLine

创建扩展方法
public static class StringExtensions()
{
    public static string ToNL(this string item)
    {
        return item += Environment.NewLine;
    }
}

现在你可以使用NL(因为简洁而选择)

Console.Write("Hello".NL());
Console.Write("World".NL());

写道:

Hello
World

您还可以制作一个只需向控制台写出内容的扩展方法。

public static void cout(this string item)
{
    Console.WriteLine(item);
    //Or Console.Write(item + Environment.NewLine);

}

然后:

"Hello".cout();

答案 1 :(得分:3)

应该工作:

Console.Write("Line 1\r\nLine 2");

答案 2 :(得分:2)

您是否尝试过以下操作?

Console.Write("Line 1\nLine2");

根据环境的不同,您可能需要使用\r\n

答案 3 :(得分:2)

在Windows上,Environment.NewLine只返回“\ r \ n”。所以在你的代码中你可以做到

Console.Write("Line 1\r\nLine 2\r\n");

或者只是

Console.Write("Line 1\nLine 2\n");

仍适用于大多数平台。但是否则你将不得不使用Environment.NewLine或其他类似实现和更短命名的方法来返回正确的字符串。

答案 4 :(得分:2)

通常我建议在Console类上创建一个扩展方法,但由于Console是静态的,所以这是不可能的。相反,您可以创建一个ConsoleHelper:

public static class ConsoleHelper
{
    public static void EnvironmentSafeWrite(string s)
    {
        s = Environment.NewLine == "\n" ? s : s.Replace("\n", Environment.NewLine);
        Console.Write(s);
    }
}

并像这样使用它:

ConsoleHelper.EnvironmentSafeWrite("Line 1\nLine 2\n");

答案 5 :(得分:1)

Console.WriteLine()只会输出换行符而不需要其他文本。

您可以通过设置Console.Out.NewLine = "your string here";

来更改NewLine的已定义字符串

答案 6 :(得分:1)

只需提供另一种解决方法:

使用string interpolation(C#6.0及更高版本),您可以使用

Console.Write($"Line 1{Environment.NewLine}Line 2{Environment.NewLine}");

不幸的是,您无法为Environment.NewLine定义一个简短的常量,因为Environment.NewLine不是常量,但是您可以使用static readonly属性作为下一个最佳选择:

private static readonly string NL = Environment.NewLine;

...

void someMethod()
{
    ...
    Console.Write($"Line 1{NL}Line 2{NL}");
    ...
}

答案 7 :(得分:0)

\r\n可以在Windows平台上使用。但是,您的问题并未说明您要定位的平台。如果您希望您的代码是多平台的,那么使用Environment.NewLine

可能更安全