Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将字符串值与c#中字符串数组的元素进行比较?_C#_Arrays - Fatal编程技术网

如何将字符串值与c#中字符串数组的元素进行比较?

如何将字符串值与c#中字符串数组的元素进行比较?,c#,arrays,C#,Arrays,在下面的程序中,我想检查(通过防御编程)用户输入(命名日期) 与字符串数组的一个元素(命名为weekdays)匹配 到目前为止,我已经做到了以下几点。有人能帮我(找到更好的解决方案)吗?谢谢 string[]weekdays=新字符串[7]{“周一”、“周二”、“周三”, “星期四”、“星期五”、“星期六”、“星期日”}; 安慰。写线(“给我一天:”); String day=Console.ReadLine(); 对于(i=0;i

在下面的程序中,我想检查(通过防御编程)用户输入(命名日期) 与字符串数组的一个元素(命名为weekdays)匹配

到目前为止,我已经做到了以下几点。有人能帮我(找到更好的解决方案)吗?谢谢

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();
   }
}