2012-10-31 18 views
2

我有這樣的文本行的文件:查找特定線路在Java中使用分裂()

[A]

這是一條線。

這是另一條線。

[B]

第三行。

...

等等。我想將這個文件讀入Java並查找僅包含[A]等的行以供進一步參考。我想:

Resources res = getResources(); 
InputStream in_s = res.openRawResource(R.raw.texts); 
byte[] b = new byte[in_s.available()]; 
in_s.read(b); 
String textstring = new String(b); 
String[] textarr = textstring.split("[\\r\\n]+"); 

然後:

int lineB = 0; 
for (int i=0; i<textarr.length; i++) { 
    if textarr[i].substring(0, 3) == "[B]") lineB = i; 
} 

之後,線仍然是零。首先,我認爲這與處理新行的方式有關(我使用的是Windows),但我也沒有使用子字符串(0,3)。我想這給我lineB = 3,任何想法我做錯了什麼?

+1

不要使用''==比較字符串。使用'equals(...)'方法。 –

+1

工程就像一個魅力!非常感謝你,我瘋了。 – phildeutsch

+1

不客氣。這很重要的原因是因爲==檢查兩個*對象*是否相同,而不是你感興趣的。方法equals(...)和equalsIgnoreCase(...)另一方面檢查兩個字符串是否具有相同順序的相同字符,這就是重要的。 –

回答

1

使用String#startsWith這樣的:

int lineB = 0; 
for (int i=0; i<textarr.length; i++) { 
    if (textarr[i].startsWith("[B]")) 
     lineB = i; 
} 
+1

謝謝,這很好。 「==」不是比較字符串的好方法......你知道的越多! – phildeutsch