如何在C#中进行多行输入?
How to make multiline input in C#?
我对 C++ 代码很感兴趣:
while(getline(cin, n))
但我想在 C# 中执行此操作,但我不知道如何执行此类操作。我有 10
行输入,需要在 一个字符串 中,但是使用 Console.ReadLine()
它只节省了我 一行 从 10
到字符串。我的字符串变量必须有 10
行文本,
例如:
"first line of text\nsecond line\nthird".
有没有办法像在 C++ 中那样做这样的事情?
如果你想模仿 getline(cin, n)
,你可以尝试从 stdin 读取,即
using System.IO;
...
// Read line by line from stdin
public static IEnumerable<string> ReadStdInLines() {
using var reader = new StreamReader(Console.OpenStandardInput());
for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())
yield return line;
}
例如:
using System.Linq;
...
string[] lines = ReadStdInLines()
.Take(10) // at most 10 lines
.ToArray();
尝试初始化一个新变量来指示要输入的行数。然后,在一个循环中,输入指定数量的新行。如果你不知道输入的数据什么时候结束,那么你可以用String.IsNullOrWhiteSpace来完成输入,它会检查你输入的最后一行是否为空,这样就完成了输入。
示例:
string line;
while(!String.IsNullOrWhiteSpace(line=Console.ReadLine())) {}
我对 C++ 代码很感兴趣:
while(getline(cin, n))
但我想在 C# 中执行此操作,但我不知道如何执行此类操作。我有 10
行输入,需要在 一个字符串 中,但是使用 Console.ReadLine()
它只节省了我 一行 从 10
到字符串。我的字符串变量必须有 10
行文本,
例如:
"first line of text\nsecond line\nthird".
有没有办法像在 C++ 中那样做这样的事情?
如果你想模仿 getline(cin, n)
,你可以尝试从 stdin 读取,即
using System.IO;
...
// Read line by line from stdin
public static IEnumerable<string> ReadStdInLines() {
using var reader = new StreamReader(Console.OpenStandardInput());
for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())
yield return line;
}
例如:
using System.Linq;
...
string[] lines = ReadStdInLines()
.Take(10) // at most 10 lines
.ToArray();
尝试初始化一个新变量来指示要输入的行数。然后,在一个循环中,输入指定数量的新行。如果你不知道输入的数据什么时候结束,那么你可以用String.IsNullOrWhiteSpace来完成输入,它会检查你输入的最后一行是否为空,这样就完成了输入。 示例:
string line;
while(!String.IsNullOrWhiteSpace(line=Console.ReadLine())) {}