我正在尝试从控制台获取主题名称和标记。我使用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 + " ");
答案 0 :(得分:2)
您可以使用LastIndexOf找到最后一个空格索引,然后在文本之前和之后应用Substring。
add esp, 16
答案 1 :(得分:1)
您可以通过帮助TakeWhile
和Last
方法简单地使用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 + " ");