2012-04-02 177 views
1

我想要做的事情非常简单。用户输入一个字符串。该程序检查并计算该文本字符串中存在的元音数量。C# - 比较两个数组中的值

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

谢谢。

回答

3

您可以使用Array.IndexOf()此:

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

我会使用LINQ:

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

为了得到字符数,您可以使用Count方法,而不是Select。 如果你想知道是否有元音,那么使用Any - 只要找到第一个匹配就会终止。

+0

我在LINQ没有知识的,因为现在我在初学阶段,我只是学习,如果C#。但是,感谢那些信息。我会记住这一点。这似乎更容易。 – Isuru 2012-04-02 08:01:40

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

更新: 要计算可能使用的匹配数量;

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

_count_在哪里? – 2012-04-02 07:47:21

+0

在问题计数没有问,但你可能会发现使用int count = arr.Where(p => vowels.Contains(p))。计数(); – daryal 2012-04-02 07:50:52

+0

问题要求计数:**程序检查并计算元音数量** – fearofawhackplanet 2012-04-02 08:06:15

0

你可以做的是创造元音字符的列表,然后使用.contains方法。

1

试试这个:

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

您可以使用LINQ为!

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

,或者,如果你想要的比赛:

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

编辑:

或数匹配的确切数目:

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

这个计数不同元音的数量,不是元音的总数(“woot”产生一个'o') – 2012-04-02 07:51:24

+0

这是一个问题?? – 2012-04-02 07:51:59

+0

是的,看看提交的代码 - 对于arr中的每个角色,他想检查另一个数组以查找匹配。 – 2012-04-02 07:56:03

2

只需用两个foreach回圈

foreach(var i in arr) 
    { 
     foreach(var j in vowels) 
     { 
      if(i==j) 
      { 
       counter++; 
      } 
     } 
    } 
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()}; 

那么你可以重复做什么,你的内容

例如喜欢

foreach (var x in q) { 
    Console.WriteLine(String.Format("{0} : {1}",x.vowel,x;count)); 
} 
0
Hash<char> vowels = //initialize to vowels. 

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

return counter.