基本上,我正在尝试编写游戏,例如在控制台中具有3个插槽的累积奖金。根据用户输入,将授予用户。但是首先,我需要用户编写正确的字符串,如果用户输入了不同的字符串,程序将重新询问输入。用户可以输入以下3个: X,Y,Z,x,y,z和J。 用户输入的一些示例:XyZ,XXJ,ZJy ... 而且我需要检查用户输入的长度是否为3个字符长,并使用循环和if-else语句包含XYZxyzJ。任何帮助,将不胜感激! 编辑:我的代码现在看起来像这样:
string input;
string pattern = @"[xXyYzZJ]+";
// Taking the input from the user and defining variables
input = Convert.ToString(Console.ReadLine());
int properLength = input.Length;
bool properInput = Regex.IsMatch(input, pattern);
bool check;
if (properLength == 3)
check = true;
else
check = false;
if (properInput == true) ;
else
properInput = false;
Console.WriteLine(check); // These 2 are for debugging purposes, will not present in final product
Console.WriteLine(properInput);
现在我想继续游戏的第二部分,但是我很难使这段代码循环。任何想法,如果布尔的propertyInput和check为true,我怎么循环这段?
答案 0 :(得分:0)
看起来您需要这样的东西
var pattern = "^[xXyYzZ]{3}$"; // note new pattern
var input = Console.ReadLine();
while (!Regex.IsMatch(input.Trim(), pattern);)
{
Console.WriteLine("YOU LOST");
Console.WriteLine("Do it again");
input = Console.Readline();
}
Console.WriteLine("YOU WON");
我尚未测试(c#;正则表达式已测试),但看起来正确-您使用正则表达式来确保只有x
,y
或z
包含在字符串中,并且是否包含3长。然后循环播放,直到用户输入匹配为止
答案 1 :(得分:-1)
要检查字符串长度,请执行以下操作:
string text = "abc";
int textLength = text.Length; // Will have value equal 3
要检查输入文本是否包含特定字符(在您的情况下为x,X,y,Y,z,Z和J),请使用{strong> Regex (正则表达式) }命名空间。例如:
System.Text.RegularExpression
在此示例中,isMatch1将具有string text1 = "abc";
string text2 = "XyZ";
string pattern = @"[xXyYzZJ]+";
bool isMatch1 = Regex.IsMatch(text1, pattern); // false
bool isMatch2 = Regex.IsMatch(text2, pattern); // true
,isMatch2将具有false
值。