2015-05-12 111 views
0

我想检查一个文件的第一行中的字符串是否与另一个字符串相等。 尴尬的部分是,字符串是相同的,但我的程序不会返回一个真正的值。 字符串为teach,文件的第一行也是teach检查两个字符串是否相等

string date = System.IO.File.ReadAllText(folder + "/NPC/" + score_npc + "/" + score_npc + ".txt"); 
     if (condition) 
     { 
      string[] parametrii = date.Split('\n'); 
      if (parametrii[0].Equals("teach")) 
       //instructions 

我试过所有的比较方法,我也做了我自己的功能。我的功能说我,(parametrii[0])[0] == b

下面是该文件的样子:

teach 
poza1 
poza2 
end 
+4

使用System.IO.File.ReadAllLines –

+2

有你检查了源文档的文本编码? – Josh

+2

逐行调试它。在debug-watcher中查看字符串内容,char by char。 –

回答

4

这是因为propably新行字符不的\ n在文件中。相反,它可能是\ r \ n。

尝试File.ReadAllLines代替:

string[] lines = System.IO.File.ReadAllLines(folder + "/NPC/" + score_npc + "/" + score_npc + ".txt"); 
if (condition) 
{ 
    if (lines[0].Equals("teach")) 
     // instructions 
} 

编辑

格兰特Winney建议,如果你只需要操纵第一行(或不是所有的)文件,你可以使用File.ReadLines

string firstLine = File.ReadLines(path).First(); 

改为。

+1

只是一个建议...即使不需要,ReadAllLines也会读取整个文件内容,而[ReadLines](https://msdn.microsoft.com/en-us/library/dd383503(v = vs.110) ).aspx)只读取它满足查询所需的内容。换句话说,'File.ReadLines(yourFilePath).First();'只会读取第一行,不会在本地读取/存储整个文件内容。 –

+0

@GrantWinney,实际上我需要文件的全部内容,但我只想比较第一行,你知道吗? –

+0

@Mehrzad Chehraz,谢谢你,你的解决方案解决了我的问题。 –

1

具有u试图改变

string[] parametrii = date.Split('\n'); 

string[] parametrii = date.Split(Environment.NewLine);? 

我怀疑这是因为你的字符串包含 '\ r' 字符

相关问题