我想从下面这段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