Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中输出换行符的简洁方法# 在C++中,我可以这样做: cout << "Line 1\nLine 2\n"; System.out.printf("Line 1%nLine 2%n");_C#_.net - Fatal编程技术网

C# C语言中输出换行符的简洁方法# 在C++中,我可以这样做: cout << "Line 1\nLine 2\n"; System.out.printf("Line 1%nLine 2%n");

C# C语言中输出换行符的简洁方法# 在C++中,我可以这样做: cout << "Line 1\nLine 2\n"; System.out.printf("Line 1%nLine 2%n");,c#,.net,C#,.net,在C#中,我真的需要做这些麻烦的事情之一: Console.WriteLine("Line 1"); Console.WriteLine("Line 2"); 或 或者有没有一种更简洁的方式,它不是特定于平台的?这应该可以: 你试过以下方法吗 Console.Write("Line 1\nLine2"); 根据您可能需要在Windows上使用\r\n的环境,environment.NewLine将只返回“\r\n”。所以在你的代码中你可以 Console.Write("Line 1\r\nL

在C#中,我真的需要做这些麻烦的事情之一:

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

或者有没有一种更简洁的方式,它不是特定于平台的?

这应该可以:


你试过以下方法吗

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

根据您可能需要在Windows上使用
\r\n

的环境,
environment.NewLine
将只返回“\r\n”。所以在你的代码中你可以

Console.Write("Line 1\r\nLine 2\r\n");
或者干脆

Console.Write("Line 1\nLine 2\n");
在大多数平台上仍然有效。但否则,您必须使用
环境.NewLine
或其他类似实现且名称较短的方法来返回正确的字符串。

Console.WriteLine()只需输出一个新行,而不需要其他文本


您可以通过设置
Console.Out.NewLine=“此处的字符串”来更改为换行符定义的字符串

\r\n
可以在Windows平台上使用。然而,您的问题并没有说明您的目标平台。如果您希望您的代码是多平台的,并且是经得起未来考验的,那么使用
环境可能更安全。换行符

不,C#中没有简洁的、与平台无关的内置换行符占位符

public static class StringExtensions()
{
    public static string NL(this string item)
    {
        return item += Environment.NewLine;
    }
}
作为一种解决方法,您可以为
Environment.NewLine

public static class StringExtensions()
{
    public static string NL(this string item)
    {
        return item += Environment.NewLine;
    }
}
现在您可以使用
NL
(由于简洁而选择)

写道:

Hello
World
您还可以创建一个扩展方法,该方法只需将某些内容写入控制台

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

}
然后:

"Hello".cout();

通常我会建议在Console类上创建一个扩展方法,但这是不可能的,因为Console是静态的。相反,您可以创建控制台帮助程序:

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

只是为了提供另一种解决方法:

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

Console.Write($"Line 1{Environment.NewLine}Line 2{Environment.NewLine}");
不幸的是,您不能用短名称为
环境.NewLine
定义常量,因为
环境.NewLine
不是常量,但您可以使用
静态只读属性作为下一个最佳选择:

private static readonly string NL = Environment.NewLine;

...

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

C++平台中的<代码> \n>代码>不可知吗?据我所知,它代表了一个有效的UNIX换行符,但不是完整的Windows换行符(它是代码> \r\n\/COD>),但是在C++方面,我是无知的。UM、java和c你为什么称C为笨重而不是Java?在任何情况下,输出
\r\n
都可以工作,因为
\n
仍然是它的一部分,因此在Unix系统上会被视为一条新线。感谢大家迄今为止的回答。只是为了确认我的要求:我不是针对特定的平台,它必须是平台无关的。回答上面的注释:C++中的“是”是平台无关的,因为底层类方法将在这样的转换合适的平台上转换\n到\r\n。不,Java和C#没有相同数量的字符用于打印,在Java中,您可以使用printf方法识别“%n”作为平台相关的行终止符,而在C#中,您必须编写Environment.NewLine或类似的东西。哦,还有一条注释,尽管\r\n可以在Unix上工作,\r\n可以在Windows上工作(因为普通控制台窗口对此没有问题)我希望能够将输出重定向到一个文件,我不希望Unix上的vi在每行末尾显示无关的回车符,也不希望Windows上的记事本显示有趣的字符,因为前面没有\r。确切地说,OP正在寻找一种与平台无关的解决方案,而不是
环境。NewLine
.thanks。我确实想成为多平台和未来的证明。但是,我想找一些比必须使用单独的字符串常量(如Environment.NewLine)更简洁的东西,因为我有许多密切相关的字符串要在单独的行上输出,我想用一个写调用来完成这一切。在他的原始示例中使用您的方法Eng.Lead .WordLoad(“1行”.nl()+“行2”.nl()),它仍然不像其他语言中的原始示例那样简洁。@ Rikl你看到我的解决方案在底部吗?它和C++一样简洁(<代码> .cOUTE()/代码>)vs.代码> cOUT谢谢乔治,好主意,但是我不知道“hello”。可以容纳cout@Klitos的等价物。您可以为您想要的每种方式创建一个扩展方法。如果您想要创建一个自定义分隔符并创建一个插入
环境的扩展方法。为此,请使用NewLine
。我的观点是:扩展方法可以为您解决这个“问题”。谢谢Yuriy,我认为您是一个没错,为了确保它在所有平台上都能正常工作,我需要使用Environment.NewLine。这有点令人失望,因为Java在其字符串格式化程序方法中有“%n”指令,而C#似乎没有,尽管可以说它在许多其他方面比Java好。
Console.Write($"Line 1{Environment.NewLine}Line 2{Environment.NewLine}");
private static readonly string NL = Environment.NewLine;

...

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