在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);
还是有更简洁的方式,这不是特定于平台的?
答案 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";
答案 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