如何在Java中使用indexOf
我正在尝试解析以下html片段中的标题:如何在Java中使用indexOf,java,html,xml,parsing,rss,Java,Html,Xml,Parsing,Rss,我正在尝试解析以下html片段中的标题: "Website (Newton) at datanucleus.org">Website</a></div> datanucleus.org上的网站(牛顿)>网站 我使用的是indexOf:strLine.indexOf(“\”>Website”) 我想知道如何搜索链接之前出现的第一个空格。因此我想捕获“”和“”>网站之间的所有内容正则表达式方法可能是最有效的。但是,您可以通过组合使用indexOf、lastinexo
"Website (Newton) at datanucleus.org">Website</a></div>
datanucleus.org上的网站(牛顿)>网站
我使用的是indexOf
:strLine.indexOf(“\”>Website”)
我想知道如何搜索链接之前出现的第一个空格。因此我想捕获“”和“”>网站之间的所有内容正则表达式方法可能是最有效的。但是,您可以通过组合使用
indexOf
、lastinexof
和子字符串
调用来实现这一点
int end = strLine.indexOf("\"Website");
int blank = strLine.substring(0, end).lastIndexOf(' ');
String interestingStuff = strLine.substring(blank + 1, end);
我想这就是你想要的:
int end = strLine.indexOf("\">Website");
int start = strLine.lastIndexOf(" ", end);
从lastIndexOf
的文档中:
返回指定子字符串最后一次出现的字符串内的索引,从指定索引开始向后搜索
还有一个版本的lastIndexOf
,它使用char
而不是字符串;在这种情况下可能更有效(但我没有检查):
对于更复杂的事物,你也可以考虑查看JavaUTI.ReGEX包。
< P>如果你有int IDX=STR.INTROXOF(“\”网站),你可以使用Stras.ListTimeXOF(“”,IDX);获取上一个空格。然后使用子字符串根据您的情况有多复杂,您可能需要考虑使用适当的HTML解析器。无论如何,更好地学习字符串函数。这是一件相对简单的事情。只需计算要传递的子字符串的索引。我非常同意@Corbin关于使用HTML解析器的观点,但如果你要坚持基本原则,你应该开始考虑使用正则表达式。明白了,我会研究一下。我不确定这是简单的还是那些棘手的事情之一。请注意,如果您尝试在不使用真正的解析器进行完整解析的情况下进行字符串匹配,您有时会出错-例如,您可能会匹配已注释掉的内容,如果属性是单引号而不是双引号,则无法匹配内容。这将搜索结束后出现的最后一个空格。OP需要结束之前的最后一个空格
@Ted Hopp:你确定吗?我对它进行了测试(见:),得到了以下输出:end:36;开始:20我还没有试过,但我认为这应该行得通。在快速搜索之后,我自己找到了这个答案:)。泰德,我想你错了,但我会努力的。我的错。它确实从指定的索引向后搜索。
int start = strLine.lastIndexOf(' ', end);