C# 如何在中检查字符串的内容和长度?

C# 如何在中检查字符串的内容和长度?,c#,string,C#,String,基本上,我试着写一个游戏,比如说在游戏机上有3个吃角子老虎机的彩票。根据用户输入,用户将获得奖励。但首先,我需要用户编写正确的字符串,如果用户输入不同的内容,程序将重新请求输入。用户可以输入以下3项: X,Y,Z,X,Y,Z和J。 用户输入的一些示例:XyZ、XXJ、ZJy。。。 我需要检查用户输入长度是否为3个字符,是否包含使用循环和if-else语句的XYZxyzJ。任何帮助都将不胜感激! 编辑:我的代码现在看起来像这样: string input; string pattern = @"[

基本上,我试着写一个游戏,比如说在游戏机上有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);

现在我想继续游戏的第二部分,但我很难让代码循环。如果布尔值properInput和check为真,你知道如何循环这段代码吗?

要检查字符串长度,请执行以下操作:

string text = "abc";
int textLength = text.Length; // Will have value equal 3
要检查输入文本是否包含特定字符x、x、y、y、z、z和J,请在System.text.RegularExpression命名空间中使用正则表达式。例如:

string text1 = "abc";
string text2 = "XyZ";

string pattern = @"[xXyYzZJ]+";

bool isMatch1 = Regex.IsMatch(text1, pattern); // false
bool isMatch2 = Regex.IsMatch(text2, pattern); // true

在本例中,isMatch1将有false值,isMatch2将有true值。

看起来您需要这样的值

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");

我没有测试过它;正则表达式已经过测试,但看起来是正确的-您可以使用正则表达式来确保字符串中只有x、y或z,并且它的长度为3。然后循环直到用户输入匹配

到目前为止,您尝试了什么,在预期的情况下,什么不起作用?我使用字符串输入成功地检查了输入长度;int stringLength=input.Length;如果stringLength==3,但我很难检查它们。我使用了if-input.ContainsXYZ,但我需要检查所有变量,看起来input.Contains只能检查1个变量。我需要使用类似input.ContainsxYz,xXJ……好吧,太棒了!如果对for或foreach循环的输入进行迭代,最终将分别使用每个字符。你能看看你是否能用Contains/IndexOf这样的方式让它工作吗?你检查了我的答案吗?编辑了我的问题,任何进一步的帮助都将不胜感激!你的目标是什么?这个代码对一个案例有效吗?现在您只想将其应用于多个迭代?