我正在制作一个程序来分析用户输入的句子的特征。为了计算句子中的元音,我在这里制作了一个非常混乱的foreach循环序列:
foreach (char v1 in input)
{
if (v1 == 'a')
{
vcounter++;
}
}
foreach (char v2 in input)
{
if (v2 == 'e')
{
vcounter++;
}
}
foreach (char v3 in input)
{
if (v3 == 'i')
{
vcounter++;
}
}
foreach (char v4 in input)
{
if (v4 == 'o')
{
vcounter++;
}
}
foreach (char v5 in input)
{
if (v5 == 'u')
{
vcounter++;
}
}
然后我拿出vcounter并将其显示为结果。我对c#很新,我想知道是否有人能提出更好的方法吗?。
答案 0 :(得分:5)
将元音存储在这样的数组中:
private readonly char[] vowels = new char[] { 'a', 'e', 'i', 'o', 'u' };
然后算上他们:
public int CountVowels(string text)
{
return text.ToLower().Count(x => vowels.Contains(x));
}
答案 1 :(得分:0)
如果您使用的是.NET 3.5或更高版本,则可以使用LINQ。
vcounter += input.Count(v => v == 'a');
vcounter += input.Count(v => v == 'e');
vcounter += input.Count(v => v == 'i');
vcounter += input.Count(v => v == 'o');
vcounter += input.Count(v => v == 'u');
为此,您必须在文档中导入LINQ。
using System.Linq;
答案 2 :(得分:0)
您可以尝试使用以下代码:
const string vowels = "aeiou";
var count = input.Count(chr => vowels.Contains(char.ToLower(chr)));
或
for (int i = 0; i < input.Length; i++)
{
if (input[i] == 'a' || input[i] == 'e' || input[i] == 'i' || input[i] == 'o' || input[i] == 'u')
{
count++;
}
}
答案 3 :(得分:0)
将元音存储在列表中:
List<Char> vowels = new List<char>() { 'a', 'e', 'i', 'o', 'u' };
算这样:
int vcounter = 0;
foreach (char chr in input)
{
if (vowels.Contains(chr))
{
vcounter++;
}
}
答案 4 :(得分:0)
试试这个:
var text = "hfdaa732ibgedsoju";
var vowels = new[] { 'a', 'e', 'i', 'o', 'u' };
var vowelFrequency = text.Where(c => vowels.Contains(c))
.GroupBy(c => c)
.ToDictionary(g => g.Key, g.Value.Count());
将创建一个类似于马克西姆答案的词典,但只能使用元音。
使用vowelFrequency.Sum(vf => vf.Value)
获取字符串中元音的总数。
答案 5 :(得分:0)
效率不高,但很短
{{1}}
答案 6 :(得分:0)
您可以使用正则表达式:
vcounter = Regex.Matches(input, "a|e|i|o|u", RegexOptions.IgnoreCase).Count;
答案 7 :(得分:0)
您可以保留此功能。我创建了一个包含一些字母的数组。
private void button1_Click(object sender, EventArgs e)
{
string [] array = { "a", "b", "c", "d" };
int vcounter = 0;
foreach (var item in array)
{
if (item.Contains("a") || item.Contains("e") || item.Contains("i")) //You can add the other volwes
{
vcounter++;
}
}
MessageBox.Show("Count of vowels : " + vcounter.ToString());
}