我已经将文件读入StringBuilder。 当我给一个字符串作为输入时,如果文件中存在该单词,则输出应为true ..如果它不存在,则应该为false ..我该怎么做?有人可以帮我代码吗?我已经把程序写到了这里..我怎么走得更远?非常感谢.. :))
class Program
{
static void Main(string[] args)
{
using (StreamReader Reader = new StreamReader("C://myfile2.txt"))
{
StringBuilder Sb = new StringBuilder();
Sb.Append(Reader.ReadToEnd());
{
Console.WriteLine("The File is read");
}
}
}
}
答案 0 :(得分:5)
单行如何:
bool textExists = System.IO.File.ReadAllText("C:\\myfile2.txt").Contains("Search text");
应该这样做:)
答案 1 :(得分:2)
using (System.IO.StreamReader Reader = new System.IO.StreamReader("C://myfile2.txt"))
{
string fileContent = Reader.ReadToEnd();
if (fileContent.Contains("your search text"))
return true;
else
return false;
}
答案 2 :(得分:2)
在您显示的示例中 - 首先没有点加载到StringBuilder
。您已经在调用StreamReader.ReadToEnd
时返回整个字符串,因此您也可以检查它是否包含您的子字符串。
如果你更改和改变字符串,StringBuilder非常有用 - 但在这个用例中,你不是。
这个怎么样:
private bool FileContainsString(string file, string substring)
{
using (StreamReader reader = new StreamReader("C://myfile2.txt"))
{
return reader.ReadToEnd().Contains(substring);
}
}
如果你肯定想要字符串构建器,那么就像这样:
private bool FileContainsString(string file, string substring)
{
using (StreamReader reader = new StreamReader("C://myfile2.txt"))
{
var sb = new StringBuilder(reader.ReadToEnd());
return sb.ToString().Contains(substring);
}
}
但在这个特定场景中,StringBuilder实际上并没有做任何有用的事情。
答案 3 :(得分:1)
您可以使用File.ReadAllText
将整个文件读取为字符串。请注意,这会立即加载整个文件,因此如果文件很大,则会占用大量内存:
string content = File.ReadAllText(@"C:\myfile2.txt");
Console.WriteLine(content.Contains("needle"));
如果needle
不跨越多行,您可以使用:
IEnumerable<string> content = File.ReadLines(@"C:\myfile2.txt");
Console.WriteLine(content.Any(line => line.Contains("needle")));
这只需要一次在内存中保留一行,然后缩放到更大的文件。
答案 4 :(得分:-1)
将其分配给字符串,然后检查它是否包含子字符串。
dim str as string
str = sb.tostring()
if str.contains("string") then
'code
else
'code
end if