如何获取URL中的数字?

时间:2013-12-22 00:26:29

标签: java

这是网址的一部分:

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吗?

5 个答案:

答案 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内任何顺序的任何参数。