2012-03-29 44 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);让以前的空间,然后使用子