C#-比较2个数组中的值
本文关键字:数组 比较 2个 C#- | 更新日期: 2023-09-27 18:29:39
我想做的事情相当简单。用户输入一个字符串。该程序检查并统计该文本字符串中存在的元音数量。
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++;
}
如何检查这两个数组以查看是否有匹配项?
谢谢。
arr.Any(p => vowels.Contains(p));
更新:要计算匹配的数量,您可以使用;
int count = arr.Where(p => vowels.Contains(p)).Count();
您可以使用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.