2011-06-14 69 views
1

说我得到了以下问题我如何读取输入两个不同的答案

Console.WriteLine(“哪支球队都面临着海誓山盟 - 使用红蓝大对抗格式?”);

然后我对上述问题的回答将有两个小组。但是,如何将它们读作两个独立的? 因此,我只读[红色] [蓝色],但其中的“vs”部分应该在那里。

我希望你能理解我想说的话。我的英语不是很好。

最好的问候,

ps的,你能告诉我在编程很新。

编辑:噢,这是所有在C#

+0

请问你总是需要刚过“VS”前“VS”的价值和? – 2011-06-14 11:31:50

+0

哦,我需要两个。然后分成两个字符串。 – deltu 2011-06-14 11:38:10

回答

1

您可以尝试使用正则表达式:

Match m = Regex.Match("^(?<team1>\.+) vs (?<team2>\.+)$", userInput); 
if (m.Success) 
{ 
    string team1 = m.Groups["team1"].Value; 
    string team2 = m.Groups["team2"].Value; 
} 

请注意,这可能不是100%语法正确的 - 你必须参考的IntelliSense一个位 - 例如,我不确定图案是Match中的第一个还是第二个参数,但我确定您已获得图片。

+0

一个小问题 - 那个(?。+)是标准的东西吗?用所有的问号和标志。而且,如果我能够使用“T”,那么这是否意味着只有有能力的词语才被接受。如果你不知道,这不是你必须要知道的 - 这只是因为我不在一个可以测试它的地方。 – deltu 2011-06-14 11:34:32

+0

对不起,我没有看到你是C#的新手:-)这个'(? ...)事情在正则表达式中形成了一个“命名组”。括号构成了一个通常只能通过索引访问的组。 '?'为组命名,因此您可以使用名称来访问组的值,如果您有嵌套组,则这更容易。 'team1'和'team2'完全是任意的(但是是唯一的)名字 - 它们对正则表达式的评估方式没有任何影响。 '\。+'很重要。它说:“至少有一个字符”。 – 2011-06-14 11:53:58

+0

正则表达式意味着什么:“找到文本'vs'前后的所有内容,并命名第一部分'team1'和第二部分'team2',以便稍后可以按名称获取匹配值”。 – 2011-06-14 11:55:57

2

有许多选项,您可以使用分割功能,使之阵,并删除“与” 或简单的使用与string.replace(“VS”,“”)函数用空值替换“vs”字符串。

5

您可以使用String.Split()

var answers = userInput.Split(new String[] { "vs" }, StringSplitOptions.RemoveEmptyEntries); 
if (answers.Length == 2) { 
    var red = answers[0]; 
    var blue = answers[1]; 
} 
+1

希望它始终vs而不是VS – V4Vendetta 2011-06-14 12:02:55

+0

随着上面的代码,var red =“哪些球队面临海誓山盟? - 使用”和var blue =“蓝色格式” – 2011-06-14 12:03:35

+0

我认为你解释文本“使用红色vs蓝色格式“作为用户答案的​​格式。对我而言,这是教学 - 即在提供答案时请使用格式“红色vs蓝色”。用户可能输入的内容:RedTeam1 vs BlueTeam5。 – Yuck 2011-06-14 12:17:33

1

U可以读取所有作为一个字符串,然后用拆“与”分隔符,然后ULL得到2个字符串u需要

0

使用String.Split功能,如其他人所说的表。这将把你的字符串分割成一个字符串数组。然后,确定数组中的哪个字符串是'vs'字符串。在'vs'之前和'vs'之后取指数的值。例如:

string input = "Which teams have faced eachother? - use Red vs Blue format"; 
string[] inputArray = input.Split(' '); 

int vsLocation = 0; 

for (int i = 0; i < inputArray.Length; i++) { 
    if (inputArray[i] == "vs") { 
     vsLocation = i; 
     break; 
    } 
} 

if (vsLocation > 0) { 
    string team1 = inputArray[vsLocation - 1]; 
    string team2 = inputArray[vsLocation + 1]; 
} 
+0

为了说明,当您使用'String.Split()'时,分隔符项目不会出现在结果中,正如您在答案中所暗示的那样。 – Yuck 2011-06-14 11:46:05

+0

我只需要一分钟自己写代码。根据你上面的回答,你是正确的。但是,我将这个空间用作分隔符。 – 2011-06-14 11:54:19

+0

不应该如果(inputArray [i] ==“vs”){像“vs”那样空格不见了 – deltu 2011-06-14 11:54:32