2012-03-29 47 views
0

我想從下面這段HTML的解析標題:如何使用的indexOf在Java中

"Website (Newton) at datanucleus.org">Website</a></div> 

我使用indexOf這樣:strLine.indexOf("\">Website")

,我想知道如何搜索鏈接前發生的第一個空格。所以,我想捕捉之間「」和「」一切>網站<「

datanucleus.org

任何想法?謝謝!

+3

取決於!你的情況有多複雜,你可能需要考慮使用一個合適的HTML解析器,無論如何,要更好地學習字符串函數,這是一個相對簡單的事情,只需要計算通過子字符串的索引 – Corbin 2012-03-29 20:33:40

+0

強烈贊同@Corbin關於使用一個HTML解析器,但如果你要堅持的基礎知識,你應該開始考慮使用正則表達式。 – 2012-03-29 20:35:01

+0

roger,我會研究它。不知道這是簡單的還是其中一個棘手的事情 – blaughli 2012-03-29 20:35:46

回答

0

我想這是你想要的。

int end = strLine.indexOf("\">Website"); 
int start = strLine.lastIndexOf(" ", end); 

lastIndexOf文檔:

返回此字符串的指定子最後一次出現處的索引,搜索開始向後指定索引處。

還有一個版本的lastIndexOf需要一個char而不是一個字符串;這可能是在這種特殊情況下更有效(但我沒有檢查):

int start = strLine.lastIndexOf(' ', end); 

對於更復雜的東西,你也可以考慮尋找到了java.util.regex包。

+0

這將搜索_after_'' end'發生的最後一個空格。 OP希望最後一個空間_before_「結束」。 – 2012-03-29 20:40:19

+0

@Ted Hopp:你確定嗎?我測試了它(見:http://pastebin.com/2qvH5bfQ),我得到這個輸出:end:36;開始:20 – 2012-03-29 20:47:00

+0

我還沒有嘗試過,但我認爲這應該工作。我在快速搜索後自己找到了這個答案:)。特德,我認爲你錯了,但我會嘗試。 – blaughli 2012-03-29 20:50:09

0

正則表達式的方法將可能是最有效的。但是,你可以與indexOflastIndexOfsubstring呼叫組合要這樣做

int end = strLine.indexOf("\"Website"); 
int blank = strLine.substring(0, end).lastIndexOf(' '); 
String interestingStuff = strLine.substring(blank + 1, end); 
1

如果你有INT IDX = str.indexOf( 「\」>網站 「),您可以使用String.lastIndexOf(」」,IDX);讓以前的空間,然後使用子