2012-10-26 46 views
3

我有一個應用程序需要讀取一個String緩衝區,它是分號';'分隔的。獲取最後一個標記字符串

String buff = foo.getBuff(); // returns the buffer 

然而,緩衝可以得到相當大的,我只需要獲得最後一個字符串令牌然後沖洗臨時變量String buff所以我的應用程序不會積累太多的記憶。

更新:

我試過這段代碼:

String lastToken = buff.substring(buff.lastIndexOf(";") + 1); 

但是,我沒有得到上面這段代碼的結果,相對於這一點:

List<String> slist = Arrays.asList(buff.split(";")); 
String lastToken = slist.get(slist.size() - 1); 

但是使用列表非常緩慢。處理這個時,我的網絡應用程序幾乎沒有響應。

+0

提供一個我的解決方案無效的例子。 –

回答

9

這將幫助你:

String lastToken = buff.substring(buff.lastIndexOf(";") + 1); 
+0

我沒有得到這個代碼的結果,相比之下:列表 slist = Arrays.asList(buff.split(「;」)); \t \t \t \t \t \t \t字符串lastToken = slist.get(slist.size() - 1); – xybrek

+0

試試這個來看看它的工作。然後,用你的字符串替換s。 String s =「fsdfsdfgdfdgdfg; dgdgdfgd; gdfgdf」; String lastToken = s.substring(s.lastIndexOf(「;」)+ 1); –

3

我不知道Java的,而是由谷歌搜索2個功能,我覺得這樣的事情應該工作:

String buff = foo.getBuff(); // returns the buffer 
String lastToken = buff.substring(buff.lastIndexOf(";")+1); 
+0

我沒有得到結果與此代碼相比:列表 slist = Arrays.asList(buff.split(「;」)); \t \t \t \t \t \t \t String lastToken = slist.get(slist.size() - 1); – xybrek

+0

但是我的解決方案很慢 – xybrek

2

檢查:

String lastToken = foo.getBuff().substring(foo.getBuff().lastIndexOf(';')+1); 

編輯:丹給出了比我更好,更快的答案。

相關問題