C# - 比较2个数组中的值

时间:2012-04-02 07:43:19

标签: c# arrays

我想做的事情很简单。用户输入一个字符串。该程序检查并计算该文本字符串中存在的元音数量。

    char[] vowels = {'a', 'e', 'i', 'o', 'u'};
    int counter = 0;

    string s = txtInput.Text.Trim();
    char[] arr = s.ToCharArray();


    foreach (char i in arr)
    {
        //checks the 2 arrays for matches
        counter++;
    }

如何查看2个数组以查看是否有匹配?

谢谢。

9 个答案:

答案 0 :(得分:6)

arr.Any(p => vowels.Contains(p));

更新: 计算您可以使用的匹配数量;

 int count = arr.Where(p => vowels.Contains(p)).Count();

答案 1 :(得分:3)

您可以使用Array.IndexOf()

if (Array.IndexOf(vowels, i) >= 0)
{
    // the character is present
}

答案 2 :(得分:2)

只需使用两个foreach循环

foreach(var i in arr)
    {
        foreach(var j in vowels)
        {
            if(i==j)
            {
                counter++;
            }
        }
    }

答案 3 :(得分:1)

我会使用LINQ:

arr.Select(c => vowels.Contains(c));

为了获得字符数,您可以使用Count方法而不是Select。 如果您想知道是否有元音,请使用Any - 它会在找到第一个匹配后立即终止。

答案 4 :(得分:1)

试试这个:

 if (vowels.Contains(i))
 {
    counter++;
 }

答案 5 :(得分:0)

您可以做的是为元音创建一个字符列表,然后使用.contains方法。

答案 6 :(得分:0)

您可以使用LINQ!

bool anyMatches = arr.Intersect(vowels).Any();

或者,如果你想要匹配:

var matches = arr.Intersect(vowels).ToList();

修改

或计算确切的匹配数量:

int count = arr.Count(x => vowels.Contains(x));

答案 7 :(得分:0)

使用此Linq查询

var q=from c in s 
  where vowels.Contains(c)
  group c by c into g
  select  new {vowel=g.Key, count=g.Count()};

然后你可以用内容迭代并做你喜欢的事情

e.g。

 foreach (var x in q) {
     Console.WriteLine(String.Format("{0} : {1}",x.vowel,x;count));
 }

答案 8 :(得分:0)

Hash<char> vowels = //initialize to vowels.

foreach(char c in input)
{
   if(hashset(vowels) contains the character)
      increment counter.
}

return counter.