Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从字符串中的href标记中提取特定地址总是以.jpg结尾_Java_String - Fatal编程技术网

Java 从字符串中的href标记中提取特定地址总是以.jpg结尾

Java 从字符串中的href标记中提取特定地址总是以.jpg结尾,java,string,Java,String,我有一个字符串,看起来总是这样: <a href="http://www.wcc.nrcs.usda.gov/nwcc/site?sitenum=XXX">Site Info</a> 然而,这只是将“sitenum=”的“Site”去掉,并返回“>站点信息”等所有内容 我希望它停止后,得到的数字,并点击“这是发现后的数字 我是否错误地使用了lastIndexOf 编辑--答案适用于一个url,但不适用于另一个url: http://www.wcc.nrcs.usda.g

我有一个字符串,看起来总是这样:

<a href="http://www.wcc.nrcs.usda.gov/nwcc/site?sitenum=XXX">Site Info</a>
然而,这只是将“sitenum=”的“Site”去掉,并返回“>站点信息”等所有内容

我希望它停止后,得到的数字,并点击“这是发现后的数字

我是否错误地使用了lastIndexOf

编辑--答案适用于一个url,但不适用于另一个url:

http://www.wcc.nrcs.usda.gov/cgibin/wygraph-multi.pl?state=NV&amp;wateryear=current&amp;stationidname=19K07S
我试图从这个url中提取“状态”,但它不是提取状态,只是替换“状态”中的字母。。。代码如下:

String state = de.substring(de.lastIndexOf("state=") + 2,
de.indexOf("&", de.lastIndexOf("state=")));
状态始终为2个字母或数字0。。。当我在我的字符串上运行此命令时,我得到:

ate=0
例如。。。我不明白这是怎么回事

编辑编辑!啊!!我明白了。。。所以2必须是6,因为这是我正在比较的字符量,以便从中找到下一个字符?

使用以下方法:

String src = de.substring(de.lastIndexOf("sitenum=") + 8,de.indexOf("\"",de.lastIndexOf("sitenum=")));
使用以下命令:

String src = de.substring(de.lastIndexOf("sitenum=") + 8,de.indexOf("\"",de.lastIndexOf("sitenum=")));

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

String src = de.substring(de.lastIndexOf("sitenum=") + "sitenum=".length(), de.indexOf(">Site Info") - 1);

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

String src = de.substring(de.lastIndexOf("sitenum=") + "sitenum=".length(), de.indexOf(">Site Info") - 1);

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

int startindex=de.lastIndexOf(“sitenum=”)+“sitenum=”.length();
int endIndex=de.lastIndexOf(“\”>站点信息);
字符串src=de.substring(startindex,endIndex);

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

int startindex=de.lastIndexOf(“sitenum=”)+“sitenum=”.length();
int endIndex=de.lastIndexOf(“\”>站点信息);
字符串src=de.substring(startindex,endIndex);

效果很好,但是如果有3个以上的数字呢?我怎么在?那很好,但是如果有3个以上的号码呢?我怎么在?那是票。那就停在“:)谢谢@Sandeep!好吧,我有点困惑了…你上面使用的代码行对于上面的url非常有效,那么为什么不换一个url呢?请参阅上面编辑的答案…这就是问题所在。停在“:)谢谢@Sandeep!好吧,我有点困惑。。。您在上面使用的代码行对于上面的url非常有用,那么为什么不针对另一个url呢?见上面编辑的答案。。。