我想從下面這段HTML的解析標題:如何使用的indexOf在Java中
"Website (Newton) at datanucleus.org">Website</a></div>
我使用indexOf
這樣:strLine.indexOf("\">Website")
,我想知道如何搜索鏈接前發生的第一個空格。所以,我想捕捉之間「」和「」一切>網站<「
即datanucleus.org
任何想法?謝謝!
我想從下面這段HTML的解析標題:如何使用的indexOf在Java中
"Website (Newton) at datanucleus.org">Website</a></div>
我使用indexOf
這樣:strLine.indexOf("\">Website")
,我想知道如何搜索鏈接前發生的第一個空格。所以,我想捕捉之間「」和「」一切>網站<「
即datanucleus.org
任何想法?謝謝!
我想這是你想要的。
int end = strLine.indexOf("\">Website");
int start = strLine.lastIndexOf(" ", end);
從lastIndexOf
文檔:
返回此字符串的指定子最後一次出現處的索引,搜索開始向後指定索引處。
還有一個版本的lastIndexOf
需要一個char
而不是一個字符串;這可能是在這種特殊情況下更有效(但我沒有檢查):
int start = strLine.lastIndexOf(' ', end);
對於更復雜的東西,你也可以考慮尋找到了java.util.regex包。
這將搜索_after_'' end'發生的最後一個空格。 OP希望最後一個空間_before_「結束」。 – 2012-03-29 20:40:19
@Ted Hopp:你確定嗎?我測試了它(見:http://pastebin.com/2qvH5bfQ),我得到這個輸出:end:36;開始:20 – 2012-03-29 20:47:00
我還沒有嘗試過,但我認爲這應該工作。我在快速搜索後自己找到了這個答案:)。特德,我認爲你錯了,但我會嘗試。 – blaughli 2012-03-29 20:50:09
正則表達式的方法將可能是最有效的。但是,你可以與indexOf
,lastIndexOf
和substring
呼叫組合要這樣做
int end = strLine.indexOf("\"Website");
int blank = strLine.substring(0, end).lastIndexOf(' ');
String interestingStuff = strLine.substring(blank + 1, end);
如果你有INT IDX = str.indexOf( 「\」>網站 「),您可以使用String.lastIndexOf(」」,IDX);讓以前的空間,然後使用子
取決於!你的情況有多複雜,你可能需要考慮使用一個合適的HTML解析器,無論如何,要更好地學習字符串函數,這是一個相對簡單的事情,只需要計算通過子字符串的索引 – Corbin 2012-03-29 20:33:40
強烈贊同@Corbin關於使用一個HTML解析器,但如果你要堅持的基礎知識,你應該開始考慮使用正則表達式。 – 2012-03-29 20:35:01
roger,我會研究它。不知道這是簡單的還是其中一個棘手的事情 – blaughli 2012-03-29 20:35:46