Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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_String - Fatal编程技术网

如何将字符串与C#中的字符串数组进行比较?

如何将字符串与C#中的字符串数组进行比较?,c#,arrays,string,C#,Arrays,String,是的,我是一个初学者,也许这是不可能的,但是我可以做些什么来测试一个字符串是否等于一个字符串数组 string speech = e.Result.Text; String[] greeting = new string[2] { "hello", "hi" }; if (speech == greeting) { James.SpeakAs

是的,我是一个初学者,也许这是不可能的,但是我可以做些什么来测试一个字符串是否等于一个字符串数组

        string speech = e.Result.Text;
        String[] greeting = new string[2] { "hello", "hi" };

            if (speech == greeting) 
            {
                James.SpeakAsync("Hi");
            }

所以你得到了一个由两个名字组成的字符串数组

string[]arrayOfNames{“Jon”,“Jack”}
字符串jon=“jon”;
/*为了检查var中的名称是否与列表中的名称相同,可以执行foreach循环*/
foreach(arrayOfNames中的变量名称)
{
//检查每把钥匙,看我们是否有乔恩的名字
如果(name==jon)打印(“成功”);
}

Linq扩展方法是最好的方法

using System.Linq;
...
if(greeting.Contains(speech) {
   // Do something
}

方法:Linq

如果已经导入了Linq,则只需使用Linq:

string speech = e.Result.Text;
string[] greeting = new string[2] { "hello", "hi" };
if (greeting.Contains(speech))
{
     James.SpeakAsync("Hi");
}
方法:IndexOf

如果尚未使用Linq,请使用Array.IndexOf检查字符串的索引。如果没有匹配项,结果将为-1

string speech = e.Result.Text;
string[] greeting = new string[2] { "hello", "hi" };
if (Array.IndexOf(greeting, speech) > -1)
{
     James.SpeakAsync("Hi");
}

您可以使用LINQ方法:Contains()或Any()

您可以检查数组是否包含给定字符串,如下所示:

string speech = e.Result.Text;
        var greeting = new string { "hello", "hi" };

            if (greeting.Contains(speech)) 
            {
                James.SpeakAsync("Hi");
            }


我假设您有一些字符串
speech
,您想知道该字符串是否等于数组
greeting
中的字符串。(我基于这样一个假设:你想接受一些演讲,并将其等同于各种问候语——你在这里所说的“平等”实际上是指演讲属于一组问候语。)

在这种情况下,您需要循环数组值,并将它们逐个与原始字符串进行比较。我建议使用一种新的方法

例如,我们假设
语音
在这里是
“hi”

    string speech = "hi";
    String[] greeting = new string[2] { "hello", "hi" };

    for (int i = 0; i < greeting.Length; i++) {
      if (speech == greeting[i]) 
      {
          Console.WriteLine ("found string in array");
      }
    }
string speech=“hi”;
字符串[]问候语=新字符串[2]{“你好”,“你好”};
for(int i=0;i
请注意,我使用
greeting.Length
获取数组的大小(即
2
)。(见:)

还要注意,我使用
greeting[I]
访问数组的第I个字符串

i
从0开始,因此使用
问候语[0]获取数组中的第一个字符串
在本例中为数组的第一个元素
“hello”

“hello”
不等于
“hi”
,因此不会发生任何事情,循环将以
i=1
而不是
i=0
重新开始

现在有了
i=1
问候[1]
给我们带来了
“嗨”
,这与
语音
相同,我们得到了我写的控制台消息

这就是你要找的吗

由于您是初学者,我建议您花些时间阅读阵列上的文档:

一定要尝试一些例子,让自己熟悉


一旦您熟悉了循环,一个更优雅的解决方案将是使用,如类似问题中所述。

除了如果
speech
等于“hello”或“hi”,结果应该是
true
    string speech = "hi";
    String[] greeting = new string[2] { "hello", "hi" };

    for (int i = 0; i < greeting.Length; i++) {
      if (speech == greeting[i]) 
      {
          Console.WriteLine ("found string in array");
      }
    }