[英]C# - comparing values in 2 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个数组,看是否有匹配项?
谢谢。
arr.Any(p => vowels.Contains(p));
更新:计算匹配次数,您可以使用;
int count = arr.Where(p => vowels.Contains(p)).Count();
您可以Array.IndexOf()
使用Array.IndexOf()
:
if (Array.IndexOf(vowels, i) >= 0)
{
// the character is present
}
只需使用两个foreach
循环
foreach(var i in arr)
{
foreach(var j in vowels)
{
if(i==j)
{
counter++;
}
}
}
我会使用LINQ:
arr.Select(c => vowels.Contains(c));
为了获得字符数,可以使用Count
方法而不是Select
。 如果您只想知道是否有元音,请使用“ Any
-它会在找到第一个匹配项后立即终止。
尝试这个:
if (vowels.Contains(i))
{
counter++;
}
您可以做的是为元音创建一个字符列表,然后使用.contains方法。
您可以为此使用LINQ!
bool anyMatches = arr.Intersect(vowels).Any();
或者,如果您想要匹配项:
var matches = arr.Intersect(vowels).ToList();
编辑:
或计算精确的匹配数:
int count = arr.Count(x => vowels.Contains(x));
使用此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.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.