如何将字符串值与c#中字符串数组的元素进行比较?
在下面的程序中,我想检查(通过防御编程)用户输入(命名日期) 与字符串数组的一个元素(命名为weekdays)匹配 到目前为止,我已经做到了以下几点。有人能帮我(找到更好的解决方案)吗?谢谢如何将字符串值与c#中字符串数组的元素进行比较?,c#,arrays,C#,Arrays,在下面的程序中,我想检查(通过防御编程)用户输入(命名日期) 与字符串数组的一个元素(命名为weekdays)匹配 到目前为止,我已经做到了以下几点。有人能帮我(找到更好的解决方案)吗?谢谢 string[]weekdays=新字符串[7]{“周一”、“周二”、“周三”, “星期四”、“星期五”、“星期六”、“星期日”}; 安慰。写线(“给我一天:”); String day=Console.ReadLine(); 对于(i=0;i
string[]weekdays=新字符串[7]{“周一”、“周二”、“周三”,
“星期四”、“星期五”、“星期六”、“星期日”};
安慰。写线(“给我一天:”);
String day=Console.ReadLine();
对于(i=0;i<工作日.长度;i++)
{
if(工作日[i]==天)
{
打破
}
else if(工作日[i]!=day&&i==6)
{
Console.WriteLine(“重试”);
day=Console.ReadLine();
i=-1;
}
}
您可以使用Linq功能:
using System.Linq;
...
string[] weekdays = new string[7] { "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday"};
Console.WriteLine("Give me a day: ");
String day= Console.ReadLine();
//No need to iterate over array and check day exists in array or not.
//You can use .Contains() method as well.
if(weekdays.Any(x => x == day))
break;
else
{
Console.WriteLine("Try again");
day = Console.ReadLine();
}
如果您希望它在循环中,那么您可以根据需要使用while()
或for
循环
Linq Any()方法:确定序列中是否存在任何元素
或者满足一个条件
您可以使用以下逻辑执行相同的操作,而无需任何linq函数和简化的解决方案:
//Week days array
string[] weekdays = new string[7] { "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday"};
//While infinity loop to execute inner code till incorrect day enters like "hey"
while(true)
{
//Read first input from user
Console.WriteLine("Give me a day: ");
string day= Console.ReadLine();
//flag to check user entered correct value or not
bool isAvailable = false;
foreach(var wday in weekdays)
{
//If entered day is correct then set flag and exit from foreach loop
if(wday == day)
{
isAvailable = true;
break;
}
}
//Check flag and if entered value is wrong then read user input again.
if(isAvailable)
break;
else
{
Console.WriteLine("Try again");
day = Console.ReadLine();
}
}
可能重复非常感谢您的建议。但是(如果您当然可以的话)您能向我解释一下它是如何与while循环一起工作的吗?或者(如果没有.Any函数),我会很感激的。再次感谢您!对于for循环或while循环,您想做什么?根据您的问题,您正在寻找一个更好的解决方案,以检查
day
是否存在于任何数组中。这个答案令人满意。但我不明白你的循环。如果用户输入的不是工作日
,是否要再次检查日
?对于,有两种可选方法。任何()
函数(我在回答中已经提到过)如.Contains()
,.Exists()
等。但你到底想做什么呢?是否要在不使用Linq
方法的情况下执行此逻辑?else循环用于用户输入将具有除“hey”@NavyAlsk等元素以外的其他值的情况,请检查我的最新更新
//Week days array
string[] weekdays = new string[7] { "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday", "Sunday"};
//While infinity loop to execute inner code till incorrect day enters like "hey"
while(true)
{
//Read first input from user
Console.WriteLine("Give me a day: ");
string day= Console.ReadLine();
//flag to check user entered correct value or not
bool isAvailable = false;
foreach(var wday in weekdays)
{
//If entered day is correct then set flag and exit from foreach loop
if(wday == day)
{
isAvailable = true;
break;
}
}
//Check flag and if entered value is wrong then read user input again.
if(isAvailable)
break;
else
{
Console.WriteLine("Try again");
day = Console.ReadLine();
}
}