这是代码:
if (@"d:\Keywords.txt".Contains(line))
{
}
else
{
w.WriteLine(line);
}
我在记事本中看到,在Keywords.txt中有一行:
丹尼尔
现在是丹尼尔 但它仍然在做w.WriteLine(line);
为什么?
答案 0 :(得分:3)
"d:\Keywords.txt"
是一个字符串,因此您正在检查line
字符串中是否包含"d:\Keywords.txt"
(不是,这就是为什么它会转到else
)。如果您要加载文件内容,则可以使用(例如)File.ReadAllLines
:
var lines = File.ReadAllLines("d:\Keywords.txt");
if(lines.Contains(line))
{
// do something
}
File
类方法的完整列表可用@MSDN File Class
答案 1 :(得分:1)
因为字符串“d:\ Keywords.txt”不包含Daniel行
答案 2 :(得分:1)
因为您没有加载该文件,所以您正在检查d:\Keywords.txt
Daniel
要加载文件并检查内容,请尝试
string fileContents = System.IO.File.ReadAllText(@"d:\Keywords.txt");
if(fileContents.Contains(line))
{
//Desired code here
}
else
{
w.WriteLine(line);
}
答案 3 :(得分:1)
if (File.ReadAllLines(@"d:\Keywords.txt").Any(x => x.Contains(line));
将获得您想要的内容或完全匹配字符串
File.ReadAllLines(@"d:\Keywords.txt").Any(x => x.Equals(line));
答案 4 :(得分:0)
您正在检查字符串d:\Keywords.txt
是否包含值Daniel
。您不打开文件并查看其内容。它不会让你得到else语句。
查看MSDN关于如何Read Text from a File
的文档答案 5 :(得分:0)
此处的包含调用是检查实际字符串@“d:\ Keywords.txt”是否包含您的搜索字符串,而不是keywords.txt的内容。
尝试类似:
using (var sr = new StreamReader(@"d:\Keywords.txt"))
{
if (sr.ReadToEnd().ToString().Contains(line) == false)
{
w.WriteLine(line);
}
}
答案 6 :(得分:0)
你应该首先阅读文件中的行
string[] lines = File.ReadAllLines(@"d:\Keywords.txt");
foreach (string line in lines)
{
// check for your "line" here
}