作为.NET的新手,我决定为编写一个程序来计算输入字符串中的元音数量。下面的程序工作正常,但是,为了进一步开发这个我想,而不是通过console.readline输入字符串,是否可以从文本文件中提取文本?我尝试使用FileOpen / FileClose和StreamReader方法来解决此问题,其中包含应将文本文件转换为CharArray的思维模式。我是从完全错误的角度看待这个问题吗?我可以自定义现有代码并使其适应文本文件,还是需要采用全新方法?
非常感谢任何帮助,谢谢
Module Module1
Sub Main()
Dim counter1 As Integer = 0
Console.WriteLine("Enter a word")
Dim myWord As String = Console.ReadLine()
Dim charArray() As Char = myWord.ToCharArray()
For Each letter In charArray
Select Case letter
Case "a", "e", "i", "o", "u", "A", "E", "I", "O", "U"
counter1 = counter1 + 1
End Select
Next
Console.WriteLine("The number of VOWELS in this word is " & counter1)
Console.ReadLine()
End Sub
End Module
答案 0 :(得分:4)
您可以在一行中执行此操作:
Console.WriteLine(Regex.Matches(File.ReadAllText("C:\input.txt"), "[aeiouAEIOU]").Count)
File
位于System.IO
命名空间中,Regex
位于System.Text.RegularExpressions
命名空间中。
关于这一点的说明:虽然你可以在一行中做到这一点,但是做这样的事情并不总是最好的。我喜欢在自己的语句中保留方法调用,因为当你可以看到每个语句返回的值时,它更容易调试。
答案 1 :(得分:1)
您的Select Case
支票可能效率很高,可以轻松调整文件中的元音数量。您可以使用File.ReadLines
遍历文件中的行,并对每行使用Select Case
检查。这应该适用于大文件,因为它不会将整个文件读入内存。
Dim count = 0
For Each line In File.ReadLines("C:\BigTextFile.txt")
For Each c In line
Select Case c
Case "a", "e", "i", "o", "u", "A", "E", "I", "O", "U"
count += 1
End Select
Next
Next
Console.WriteLine(count)
根据您的文字文件,您可能需要specify the encoding。