2017-09-03 12 views
-1

キーワードを入力するように要求するプログラムを書く必要があります。その後、テキストファイルを開き、キーワードを含む各行をコンソールに書き込む必要があります。テキストファイルでキーワードを検索する

特定の文字列のテキストを検索するには、.Contains()メソッドを使用する必要があります。検索されているテキストは、パラメータとして渡されるべき「

何私がこれまで持っていることである:。

Sub Main() 
     Console.Write("Please enter a keyword: ") 
     Dim keyword As String = Console.ReadLine() 

     Dim filePath As String = "C:\...\Projects\testing.txt" 
     Dim fileHolder As System.IO.StreamReader 
     Dim sentence As String 
     fileHolder = My.Computer.FileSystem.OpenTextFileReader(filePath) 
     sentence = fileHolder.ReadLine() 

任意のヒントやヒントが役立ちますおかげ

+0

が私のために宿題^^最初のスニペットで – Moosli

答えて

2

はこのような何かを試してみてください:。!

Console.Write("Please enter a keyword: ") 
Dim keyword As String = Console.ReadLine() 

Dim filePath As String = "C:\a.txt" 
Dim lines() As String = System.IO.File.ReadAllLines(filePath) 
For i = 0 To lines.Length - 1 
    If lines(i).Contains(keyword) Then Console.WriteLine(lines(i)) 
Next 
Console.ReadKey() 

ます。また、このようにループせずにそれを行うことができます。

Console.Write("Please enter a keyword: ") 
Dim keyword As String = Console.ReadLine() 

Dim filePath As String = "C:\a.txt" 
Dim lines() As String = System.IO.File.ReadAllLines(filePath) 
Dim filteredLines As String = String.Join(vbNewLine, lines.Where(Function(line As String) line.Contains(keyword)).ToArray()) 
Console.WriteLine(filteredLines) 
Console.ReadKey() 

このコードはまたに短縮することができます。

Console.Write("Please enter a keyword: ") 
Dim keyword As String = Console.ReadLine() 
Dim filteredLines As String = String.Join(vbNewLine, System.IO.File.ReadAllLines("C:\a.txt").Where(Function(line As String) line.Contains(keyword)).ToArray()) 
Console.WriteLine(filteredLines) 
Console.ReadKey() 
+0

ように見え、あなたはメモリにすべての行をもたらしています。しかし、それが巨大なファイルであれば(行が1行ではなく、たくさんの行を持っていれば)、すべての行をメモリに持たないのはどうですか? ReadLine()を一度に読むのではなく毎回使用する方が良いかもしれないと思う。 – Sree

関連する問題