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

.NET计算文本文件中的元音,.net,vb.net,text,text-files,.net,Vb.net,Text,Text Files,作为.NET的新手,我决定给自己设置一个小挑战,编写一个程序来计算输入字符串中的元音数。下面的程序运行良好,但是为了进一步发展,我想,与其通过console.readline输入字符串,还可以从文本文件中提取文本吗?我尝试使用FileOpen/FileClose和StreamReader方法来解决这个问题,我的想法是文本文件应该转换为字符集。我是否从完全错误的角度看待这个问题?我可以自定义现有代码并将其改编为文本文件,还是需要采用全新的方法 非常感谢您的帮助,谢谢 Module Module1

作为.NET的新手,我决定给自己设置一个小挑战,编写一个程序来计算输入字符串中的元音数。下面的程序运行良好,但是为了进一步发展,我想,与其通过console.readline输入字符串,还可以从文本文件中提取文本吗?我尝试使用FileOpen/FileClose和StreamReader方法来解决这个问题,我的想法是文本文件应该转换为字符集。我是否从完全错误的角度看待这个问题?我可以自定义现有代码并将其改编为文本文件,还是需要采用全新的方法

非常感谢您的帮助,谢谢

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

您可以在一行中完成此操作:

Console.WriteLine(Regex.Matches(File.ReadAllText("C:\input.txt"), "[aeiouAEIOU]").Count)
文件位于System.IO命名空间中,Regex位于System.Text.RegularExpressions命名空间中


关于这一点,请注意:虽然您可以在一行中完成这项工作,但这样做并不总是最好的。我喜欢将方法调用保留在它们自己的语句中,因为当您可以看到每个调用返回的值时,调试就更容易了

您可以在一行中完成此操作:

Console.WriteLine(Regex.Matches(File.ReadAllText("C:\input.txt"), "[aeiouAEIOU]").Count)
文件位于System.IO命名空间中,Regex位于System.Text.RegularExpressions命名空间中

关于这一点,请注意:虽然您可以在一行中完成这项工作,但这样做并不总是最好的。我喜欢将方法调用保留在它们自己的语句中,因为当您可以看到每个调用返回的值时,调试就更容易了

您的选择大小写检查可能非常有效,并且可以很容易地对文件中的元音进行计数。您可以使用迭代文件中的行,并在每一行上使用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)
根据您的文本文件,您可能需要。

您的选择大小写检查可能非常有效,并且可以很容易地对文件中的元音进行计数。您可以使用迭代文件中的行,并在每一行上使用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)

根据您的文本文件,您可能需要。

非常感谢您抽出宝贵的时间。我每天都在学习新的东西。非常感谢马克给我的时间,非常感谢。我每天都在学习新的东西。谢谢你抽出时间来。对于像我这样的新手来说,这看起来有点复杂,但我会调查的。只是想知道…这对除.txt以外的其他文件类型有效吗?文件扩展名只是一个文件扩展名…它没有任何意义,只是帮助操作系统找出用于打开它的默认程序,并帮助用户过滤和排序文件。您可以将input.txt更改为input.pdf,您的程序仍然可以从中读取文本,只是数据没有更改。如果您双击它,它将尝试在Adobe Acrobat或任何您的PDF应用程序中打开,但它将失败,因为文件中的数据不是二进制/PDF…而是文本。因此,是的,只要数据是文本编码数据(ASCII、Unicode、,等等。你甚至可以从二进制文件(例如真正的PDF)中读取文本,但它只是一堆乱七八糟的unicode字符,因为它不是文本,文件中的位和字节是二进制数据,可以由任何应用程序打开它们来解释。谢谢你的时间。对于像我这样的新手来说,这看起来有点复杂,但我会调查的。只是想知道…这对除.txt以外的其他文件类型有效吗?文件扩展名只是一个文件扩展名…它没有任何意义,只是帮助操作系统找出用于打开它的默认程序,并帮助用户过滤和排序文件。您可以将input.txt更改为input.pdf,您的程序仍然可以从中读取文本,只是数据没有更改。如果您双击它,它将尝试在Adobe Acrobat或任何您的PDF应用程序中打开,但它将失败,因为文件中的数据不是二进制/PDF…而是文本。因此,是的,只要数据是文本编码数据(ASCII、Unicode、,等等。您甚至可以从二进制文件(例如真正的PDF)中读取文本,但它只是一堆乱七八糟的unicode字符,因为它不是文本,文件中的位和字节是二进制数据,可以由任何应用程序打开它们来解释。