这是网址的一部分:
String str = "/item/board_read.nhn?code=008250&nid=22939649&st=&sw=&page=1";
我想要选择 nid ,22939649
的属性。我怎样才能做到这一点?
我尝试使用Jsoup解析器。
Document doc = Jsoup.parse(str);
String nid = doc.attr(nid);
System.out.println(nid);
但我看不到任何东西。也许那样只需要获取HTML attr,而不是一般的字符串。我应该使用regx吗?
答案 0 :(得分:2)
使用indexOf
有什么问题?
String number = str.substring(str.indexOf("nid=") + 4, str.indexOf("&st="));
答案 1 :(得分:2)
您可以使用简单的regexp或重新创建查询解析器。 在“?”之前删除部分索引。 拆分& Foreach,与=分开以获得代码和值。
您能否告诉我们上下文,让您找到已经实现您需求的文章。 它在webapp中吗?还是..?
答案 2 :(得分:2)
您可以使用Apache的URLEncodedUtils
List<NameValuePair> params = URLEncodedUtils.parse(URI.create(str), "UTF-8");
for (NameValuePair param : params) {
if (param.getName().equals("nid")) {
System.out.println(param.getValue());
break;
}
}
答案 3 :(得分:1)
可以保持简单
String str = "/item/board_read.nhn?code=008250&nid=22939649&st=&sw=&page=1";
int startIndex = str.indexOf("nid=");
int endIndex = str.indexOf('&', startIndex);
String nid = str.substring(startIndex+4, endIndex);
答案 4 :(得分:1)
Jsoup解析器在这里没有帮助。
您可以使用正则表达式:
//String str = "/item/board_read.nhn?nid=22939649&code=008250&st=&sw=&page=1";
//String str = "/item/board_read.nhn?code=008250&st=&sw=&page=1&nid=22939649";
String str = "/item/board_read.nhn?code=008250&nid=22939649&st=&sw=&page=1";
Pattern p = Pattern.compile("[?&]nid=(\\d+)");
Matcher m = p.matcher(str);
if (m.find()) {
String nid = m.group(1);
System.out.println(nid);
}
else {
System.out.println("nid not found");
}
这适用于URL内任何顺序的任何参数。