.NET从文本文件中计算元音

时间:2017-04-14 13:38:23

标签: .net vb.net text text-files

作为.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

2 个答案:

答案 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