在控制台应用程序中解析粘贴的文本
parsing pasted text in console application
我有一个用 C# 编写的控制台应用程序
它允许用户粘贴一些文本如下
aaaaa
bbbbb
ccccc
我知道 console.readline() 不会接受,所以我使用了 console.in.readtoend()
string input = Console.In.ReadToEnd();
List<string> inputlist = input.Split('\n').ToList();
我需要它逐行解析输入文本
上面的代码有效,但是粘贴后,为了继续,用户必须按一次回车,然后按 ctrl+z 然后再次按回车。
我想知道是否有更好的方法
需要按回车键一次的东西
有什么建议吗?
感谢
我现在明白为什么这个问题很难了。这对你有用吗?
Console.WriteLine("Ctrl+c to end input");
StringBuilder s = new StringBuilder();
Console.CancelKeyPress += delegate
{
// Eat this event so the program doesn't end
};
int c = Console.Read();
while (c != -1)
{
s.Append((char)c);
c = Console.Read();
}
string[] results = s.ToString().Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
您不需要做任何额外的事情。只需通过 ReadLine 阅读,然后按回车键。
string line1 = Console.ReadLine(); //aaaaa
string line2 = Console.ReadLine(); //bbbbb
string line3 = Console.ReadLine(); //ccccc
在控制台中,如果您粘贴一行代码,它们不会立即执行。也就是说,如果您粘贴
aaaa
bbbb
cccc
没有任何反应。一旦您按下回车键,Read 方法就会开始执行它的工作。和 ReadLine() returns 在每一个新行之后。所以我一直这样做的方式,IMO 这是最简单的方式:
List<string> lines = new List<string>();
string line;
while ((line = Console.ReadLine()) != null)
{
// Either you do here something with each line separately or
lines.add(line);
}
// You do something with all of the lines here
我的第一个Whosebug回答,心情激动
我能够通过以下代码解决您的问题。
粘贴所有文本后,您只需按回车键即可。
Console.WriteLine("enter line");
String s;
StringBuilder sb = new StringBuilder();
do
{
s = Console.ReadLine();
sb.Append(s).Append("\r\n");
} while (s != "");
Console.WriteLine(sb);
我有一个用 C# 编写的控制台应用程序
它允许用户粘贴一些文本如下
aaaaa
bbbbb
ccccc
我知道 console.readline() 不会接受,所以我使用了 console.in.readtoend()
string input = Console.In.ReadToEnd();
List<string> inputlist = input.Split('\n').ToList();
我需要它逐行解析输入文本 上面的代码有效,但是粘贴后,为了继续,用户必须按一次回车,然后按 ctrl+z 然后再次按回车。
我想知道是否有更好的方法 需要按回车键一次的东西
有什么建议吗?
感谢
我现在明白为什么这个问题很难了。这对你有用吗?
Console.WriteLine("Ctrl+c to end input");
StringBuilder s = new StringBuilder();
Console.CancelKeyPress += delegate
{
// Eat this event so the program doesn't end
};
int c = Console.Read();
while (c != -1)
{
s.Append((char)c);
c = Console.Read();
}
string[] results = s.ToString().Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
您不需要做任何额外的事情。只需通过 ReadLine 阅读,然后按回车键。
string line1 = Console.ReadLine(); //aaaaa
string line2 = Console.ReadLine(); //bbbbb
string line3 = Console.ReadLine(); //ccccc
在控制台中,如果您粘贴一行代码,它们不会立即执行。也就是说,如果您粘贴
aaaa
bbbb
cccc
没有任何反应。一旦您按下回车键,Read 方法就会开始执行它的工作。和 ReadLine() returns 在每一个新行之后。所以我一直这样做的方式,IMO 这是最简单的方式:
List<string> lines = new List<string>();
string line;
while ((line = Console.ReadLine()) != null)
{
// Either you do here something with each line separately or
lines.add(line);
}
// You do something with all of the lines here
我的第一个Whosebug回答,心情激动
我能够通过以下代码解决您的问题。 粘贴所有文本后,您只需按回车键即可。
Console.WriteLine("enter line");
String s;
StringBuilder sb = new StringBuilder();
do
{
s = Console.ReadLine();
sb.Append(s).Append("\r\n");
} while (s != "");
Console.WriteLine(sb);