我想做的事情很简单。用户输入一个字符串。该程序检查并计算该文本字符串中存在的元音数量。
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个数组以查看是否有匹配?
谢谢。
答案 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.