private void Button3_Click(object sender, EventArgs e)
{
string start = Directory.GetCurrentDirectory() + @"\file.txt";
using (var streamReader = new StreamReader(start))
{
string[] lines = File.ReadAllLines(start);
int len = lines.Length;
for (int i = 0; i < len; i++)
{
if (ReadText[i] == 'a' || ReadText[i] == 'e' || ReadText[i] == 'i' || ReadText[i] == 'o' || ReadText[i] == 'u' || ReadText[i] == 'A' || ReadText[i] == 'E' || ReadText[i] == 'I' || ReadText[i] == 'O' || ReadText[i] == 'U')
{
vowel++;
}
}
richTextBox3.AppendText(Convert.ToString(vowel) + " ");
}
}如何从文本文件中读取不同的行,以及文本中有多少元音。首先,我试图访问这个文本文件中的5-6-7行:https://gyazo.com/7618175d9c948eb73d0eae5ad322e9c8
然后我要扫描5-6-7行,看看里面有多少元音。我想像这样在TextBox中打印:例如:a is: 5 \n is: 7 \n .
发布于 2019-12-03 23:07:13
不如:
var filePath = Directory.GetCurrentDirectory() + @"\file.txt";
var count = 0;
var vowels = new[] { 'a', 'e', 'i', 'o', 'u' };
foreach(var line in File.ReadLines(filePath).Skip(4).Take(3))
count += line.Count(c => vowels.Contains(char.ToLowerInvariant(c)));
Console.WriteLine(count);这将只从文本文件(5、6和7)获得所需的行,并从它们获得元音的总数。
如果您想得到每个元音的计数,那么您可以这样做:
var dict = new Dictionary<char, int>
{
{ 'a', 0 },
{ 'e', 0 },
{ 'i', 0 },
{ 'o', 0 },
{ 'u', 0 },
};
foreach(var line in File.ReadLines(filePath).Skip(4).Take(3))
foreach(var kvp in dict.ToList())
dict[kvp.Key] += line.Count(c => kvp.Key.Equals(char.ToLowerInvariant(c)));
foreach (var kvp in dict)
Console.WriteLine($"{kvp.Key} : {kvp.Value}");发布于 2019-12-04 01:13:04
首先,创建一个测试元音的数据结构:
var vowels = "aeiou".ToHashSet();然后是一个数据结构,用来记住哪些行是感兴趣的:
var interestingLineNumbers = new[] { 5, 6, 7 }.ToHashSet();
var maxInterestingLineNumber = interestingLineNumbers.Max();现在,您可以从文件中提取有趣的行,方法是读到最后一个有趣的行,并保留感兴趣的行:
var linesOfInterest = File.ReadLines(filename).Take(maxInterestingLineNumber).Where((l,i) => interestingLineNumbers.Contains(i+1));现在,对于每一行感兴趣的内容,取出元音,然后计算出所有元音:
var vowelCounts = linesOfInterest.SelectMany(l => l.ToLower().Where(ch => vowels.Contains(ch)))
.GroupBy(vch => vch)
.OrderBy(vg => vg.Key) // optional ordering
.Select(vg => $"{vg.Key} is: {vg.Count()}");组合元音行以创建TextBox文本值:
var text = String.Join('\n', vowelCounts);如果这并不重要,您可以删除OrderBy行来省略排序。如果您需要记住元音是大写还是小写,可以扩展vowels以包括大写元音并删除ToLower。Unicode元音识别是有问题的,所以我只列出了您所关心的那些。
发布于 2019-12-03 21:26:18
您可以阅读所有行,然后选择第5、6和7行,然后检查所有元音。
string[] ReadLines = File.ReadAllLines(start);
string line = string.Empty;
if (ReadLines.Count() > 7)
{
line = $"{ReadLines[4]}{ReadLines[5]}{ReadLines[6]}".ToLower();
}
else
{
line = string.Join("", ReadLines);
}
int len = line.Length;
for (int i = 0; i < len; i++)
{
if (line[i] == 'a' || line[i] == 'e' || line[i] == 'i' || line[i] == 'o' || line[i] == 'u')
{
vowel++;
}
}
richTextBox3.AppendText(vowel.ToString() + " ");https://stackoverflow.com/questions/59165474
复制相似问题