0

我有一个总是看​​起来像这样的字符串:

<a href="http://www.wcc.nrcs.usda.gov/nwcc/site?sitenum=XXX">Site Info</a>

...其中 sitenum=XXX 将是任何 3 或 4 或 5 数字组合。我试图从这个字符串中获取站点编号。

我想这会给我 3 个数字的正确信息:

String src = de.substring(de.lastIndexOf("sitenum=") + 3);

但是,这只是从 'sitenum=' 中取出 'sit' 并返回其他所有内容,例如 ">Site Info

我希望它在获得数字并点击数字之后的“”后停止。

我是否错误地使用了 lastIndexOf?

编辑——答案适用于一个网址,但不适用于另一个:

http://www.wcc.nrcs.usda.gov/cgibin/wygraph-multi.pl?state=NV&amp;wateryear=current&amp;stationidname=19K07S

我试图从这个网址中提取“状态”,但它不是拉状态,只是替换“状态”中的字母......这是代码:

String state = de.substring(de.lastIndexOf("state=") + 2,
de.indexOf("&", de.lastIndexOf("state=")));

状态始终是 2 个字母或数字 0...当我在我的字符串上运行它时,我得到:

ate=0

例如......我对它是如何工作的感到困惑?

编辑编辑!啊!我明白了...所以 2 必须是 6 因为这是我要比较的字符数以从中找到下一个字符?

4

3 回答 3

1

用这个:

String src = de.substring(de.lastIndexOf("sitenum=") + 8,de.indexOf("\"",de.lastIndexOf("sitenum=")));
于 2013-09-28T16:35:29.677 回答
1

不是最好的方法,但请检查它是否是您需要的:

String src = de.substring(de.lastIndexOf("sitenum=") + "sitenum=".length(), de.indexOf(">Site Info") - 1);
于 2013-09-28T16:35:35.743 回答
1

实际上,您正在尝试获取之后的文本"sitenum=",但lastIndexOf("sitenum=")将返回的起始索引"sitenum="而不是您期望的文本尝试

int startindex = de.lastIndexOf("sitenum=") + "sitenum=".length();
int endIndex = de.lastIndexOf("\">Site Info</a>"); 
String src = de.substring(startindex ,endIndex);
于 2013-09-28T16:39:17.603 回答