如何在控制台中使用空格分隔多个输入

时间:2016-07-24 13:44:47

标签: c# console

我正在尝试从控制台获取主题名称和标记。我使用split()来分隔主题和标记。例如主题名称和标记英语90 。我正在使用空间来分割主题和标记。主要问题是当我得到像计算机科学90 这样的主题名称时,split()不起作用。我如何分开输入??

string name1 = Console.ReadLine();
string sub = name1.Split(' ')[0];
string mark = name1.Split(' ')[1];
total += Convert.ToInt32(mark);
Console.Write(sub + " " + mark + "  ");

4 个答案:

答案 0 :(得分:2)

您可以使用LastIndexOf找到最后一个空格索引,然后在文本之前和之后应用Substring

add esp, 16

答案 1 :(得分:1)

您可以通过帮助TakeWhileLast方法简单地使用LINQ:

string name1 = Console.ReadLine();
var temp = name1.Split(' ');
string sub = string.Join(" ", temp.TakeWhile(c => c != temp.Last()));
string mark = temp.Last();
total += Convert.ToInt32(mark);
Console.Write(sub + " " + mark + "  ");

答案 2 :(得分:0)

您可以使用String.Split。您可以提供要用于将字符串拆分为多个字符的字符。如果没有提供,则所有空格都被假定为分裂字符

string[] tokens = line.Split(); 

或者,如果您只想使用空格作为分隔符:

string[] tokens = line.Split(' ');

如果要将它们解析为int,可以使用Array.ConvertAll():

int[] numbers = Array.ConvertAll(tokens, int.Parse); 

如果要检查格式是否有效,请使用int.TryParse。

答案 3 :(得分:0)

我使用2个输入代替:

   string sub = Console.ReadLine();
   string mark = Console.ReadLine();
   Console.Write(sub + " " + mark + " ");