在哪里搜索
本文关键字:搜索 在哪里 | 更新日期: 2023-09-27 18:01:24
我目前正在做一个涉及文本文件的c#小练习。所有的文本文件都是文本文件中每一行的句子。到目前为止,我能够读取文本并将其存储到字符串数组中。接下来我需要做的是搜索一个特定的词,然后写出包含搜索到的词/短语的任何句子。我只是想知道我是应该在while循环内还是在其他地方?
String filename = @"sentences.txt";
// File.OpenText allows us to read the contents of a file by establishing
// a connection to a file stream associated with the file.
StreamReader reader = File.OpenText(filename);
if (reader == null)
{
// If we got here, we were unable to open the file.
Console.WriteLine("reader is null");
return;
}
// We can now read data from the file using ReadLine.
Console.WriteLine();
String line = reader.ReadLine();
while (line != null)
{
Console.Write("'n{0}", line);
// We can use String.Split to separate a line of data into fields.
String[] lineArray = line.Split(' ');
String sentenceStarter = lineArray[0];
line = reader.ReadLine();
}
Console.Write("'n'nEnter a term to search and display all sentences containing it: ");
string searchTerm = Console.ReadLine();
String searchingLine = reader.ReadLine();
while (searchingLine != null)
{
String[] lineArray = line.Split(' ');
String name = lineArray[0];
line = reader.ReadLine();
for (int i = 0; i < lineArray.Length; i++)
{
if (searchTerm == lineArray[0] || searchTerm == lineArray[i])
{
Console.Write("'n{0}", searchingLine.Contains(searchTerm));
}
}
}
您可以使用File
类使事情变得更容易。
要从文本文件中读取所有行,可以使用File.ReadAllLines
string[] lines = File.ReadAllLines("myTextFile.txt");
如果你想找到包含一个单词或句子的所有行,你可以使用Linq
// get array of lines that contain certain text.
string[] results = lines.Where(line => line.Contains("text I am looking for")).ToArray();
问题:我只是想知道我是否应该在while循环内或其他地方?
答案:如果你不想(也不应该)将所有文件内容存储在内存中-在while循环中。否则,您可以将while循环中的每一行复制到List
或array
,并在其他地方搜索它们(再次,对于大文件,这是非常占用资源的方法,不推荐)
你的代码看起来很奇怪(尤其是第二个while
循环——它永远不会执行,因为文件已经被读取了,如果你想再次读取文件,你需要重置reader
)。首先,while
循环除了写入控制台之外没有做任何有用的事情…
如果这是真正的代码,你应该考虑修改它,并实现Matthew Watson的建议,LINQ