2015-05-12 110 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' 字符

相關問題