2012-05-03 107 views
0

您好,我想在java中使用StringTokeniser來標記文本文件。但問題是這只是最後一句話。需要一點幫助。此示例代碼是map-reduce函數的一部分。StringTokenizer只採取行的最後一個字

String profile; 

StringTokenizer inputKey=new StringTokenizer(value.toString()); 
while(inputKey.hasMoreTokens()){ 

    String input=inputKey.nextToken(); 
    if(!input.endsWith("</id>")){ 
     textInput.set(input); 
    } else { 
     profile=input.substring(4,15); 
     profileId.set(profile); 

    } 
} 
+2

什麼是輸入和期望輸出? –

+0

...什麼是'textInput'? –

+1

你試圖標記字符串的分隔符是什麼?沒有傳入特定的StringTokenizer,默認爲''「'作爲分隔符。 –

回答

2

您應該使用調試器大多數都表示,並停止使用StringTokenizer類和啓動String.split ..

在實例化對象的StringTokenizer沒有分隔符,你可以設置分隔符明確(可能是「,」或「。」在你的情況下)或者使用一個構造函數,它接受你正試圖解析的分隔符和字符串。

+0

好的。你能解釋我與示例的區別嗎?因爲我必須使用tokniser。我必須用數千個字符串解析文件。謝謝 –

+0

+1對於split()。 @Rohit Haritash,你打擾了看StringTokenizer javadoc嗎? 「StringTokenizer是一個遺留的類,爲了兼容性的原因被保留下來,儘管它在新代碼中的使用不受歡迎。建議任何尋求該功能的人都使用String或java.util.regex包的拆分方法。」此外,如果所有輸入都適合單個String對象,則將它分割成幾個較小的字符串沒有問題。 – Dima

+0

不能在這裏使用正則表達式。在這個任務中,有一段時間我通過xml和html標籤解析。模式很難識別。我會盡力實現對此的分割。謝謝 –

0

這些類型的問題是學習如何調試程序的完美。