C# - 比较两个数组中的值
您可以使用Array.IndexOf()
此:
if (Array.IndexOf(vowels, i) >= 0)
{
// the character is present
}
我会使用LINQ:
arr.Select(c => vowels.Contains(c));
为了得到字符数,您可以使用Count
方法,而不是Select
。 如果你想知道是否有元音,那么使用Any
- 只要找到第一个匹配就会终止。
arr.Any(p => vowels.Contains(p));
更新: 要计算可能使用的匹配数量;
int count = arr.Where(p => vowels.Contains(p)).Count();
_count_在哪里? – 2012-04-02 07:47:21
在问题计数没有问,但你可能会发现使用int count = arr.Where(p => vowels.Contains(p))。计数(); – daryal 2012-04-02 07:50:52
问题要求计数:**程序检查并计算元音数量** – fearofawhackplanet 2012-04-02 08:06:15
试试这个:
if (vowels.Contains(i))
{
counter++;
}
您可以使用LINQ为!
bool anyMatches = arr.Intersect(vowels).Any();
,或者,如果你想要的比赛:
var matches = arr.Intersect(vowels).ToList();
编辑:
或数匹配的确切数目:
int count = arr.Count(x => vowels.Contains(x));
这个计数不同元音的数量,不是元音的总数(“woot”产生一个'o') – 2012-04-02 07:51:24
这是一个问题?? – 2012-04-02 07:51:59
是的,看看提交的代码 - 对于arr中的每个角色,他想检查另一个数组以查找匹配。 – 2012-04-02 07:56:03
只需用两个foreach
回圈
foreach(var i in arr)
{
foreach(var j in vowels)
{
if(i==j)
{
counter++;
}
}
}
使用此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));
}
Hash<char> vowels = //initialize to vowels.
foreach(char c in input)
{
if(hashset(vowels) contains the character)
increment counter.
}
return counter.
我在LINQ没有知识的,因为现在我在初学阶段,我只是学习,如果C#。但是,感谢那些信息。我会记住这一点。这似乎更容易。 – Isuru 2012-04-02 08:01:40