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

本文关键字:分隔 输入 空格 何使用 控制台 | 更新日期: 2023-09-27 17:58:20

我正试图从控制台获取主题名称和标记。我正在使用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 + "  ");

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

您可以使用LastIndexOf定位最后一个空间索引,然后在前后对文本应用Substring。

int lastSpaceIndex = line.LastIndexOf(" ");
string subject = line.Substring(0, lastSpaceIndex);
string grade = line.Substring(lastSpaceIndex + 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 + "  ");

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

string[] tokens = line.Split(); 

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

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

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

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

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

我会使用2个输入,例如:

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