如何在C#中读取控制台输入直到空格或回车

3

我刚开始学习C#。当涉及到从控制台读取输入时,我知道有Console.ReadLine()可以读取直到行尾的输入,但我想要读取直到行尾或空格的输入,就像在c++中的std::cin一样。输入a b c应该能够被读取为:

a b c

或者

a b
c

或者

a
b c

或者

a
b
c

结果应该是相同的。


6
你可以编写自己的函数,使用Console.Read()循环读取输入,直到找到退出字符为止。 - maccettura
1个回答

8

Console类支持两种读取方法。

Read() 会读取一个单独的字符。

ReadLine() 会读取整行内容,直到遇到换行符(例如,Environment.NewLine 的字符)。

从您上面提供的信息来看,您只需读取多行文本并将其拆分为标记即可。您可以通过获取标准输入流并读取它直到“结束”来实现这一点...也就是当接收到 CTRL+Z时。

using (var sr = new StreamReader(Console.OpenStandardInput(), Console.InputEncoding))
{
    var input = sr.ReadToEnd();

    var tokens = input.Replace(Environment.NewLine, " ").Split(" ");

    foreach (var t in tokens)
    {
        Console.WriteLine($"Token: \"{t}\"");
    }

    Console.Read();
}

enter image description here


非常感谢你的答案,这正是我所需要的。 - Vesk
1
给它一个+1和一个勾,好吗 :-) - Eoin Campbell
我实际上不到15的声望,所以+1并没有计入。 - Vesk
1
哈哈,没问题 :-) - Eoin Campbell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接