【问题标题】:java regular expression url parsing [duplicate]java正则表达式url解析[重复]
【发布时间】:2012-11-21 09:09:12
【问题描述】:

可能重复:
How to extract parameters from a given url

我正在尝试仅从该 url 中的参数中检索数字:

htt://tesing12/testds/fdsa?communityUuid=45352-32452-52

我试过这个没有运气:

^.*communityUuid=

任何帮助都会很好。

【问题讨论】:

  • 为什么不直接搜索communityUuid= 并抓取该索引之后的所有内容。我看不出你想用什么正则表达式。
  • 那之后url会有更多数据吗?
  • 因为我不保证它是字符串中的最后一项,也许更好的例子是 htt://tesing12/testds/fdsa?communityUuid=45352-32452-52?topic=890531- 532-532
  • 您评论中的示例不是如何构造具有多个参数的 URL。每个连续的参数前面都会有一个& 字符。所以......你仍然不需要正则表达式。
  • 有很多库可以为你做到这一点:stackoverflow.com/questions/218608/…

标签: java regex parsing url


【解决方案1】:

我认为没有任何理由使用正则表达式。

我会这样做:

String token = "communityUuid=";
String url = "htt://tesing12/testds/fdsa?communityUuid=45352-32452-52";
int index = url.indexOf(token) + token.length();
String theNumbers = url.substring(index);

注意:

您可能还需要寻找下一个参数:

String token = "communityUuid=";
String url = "htt://tesing12/testds/fdsa?communityUuid=45352-32452-52";
int startIndex = url.indexOf(token) + token.length();
// here's where you might want to use a regex
String theNumbers = url.substring(startIndex).replaceAll("&.*$", "");

【讨论】:

  • 在您上面的示例代码中,index 不会有字符串 communityUuid 中“c”的索引值吗?因此,字符串“theNumbers”将是 communityUuid=45352-32452-52 这不是 OP 要求的。 int 变量需要适当增加。建议您更新您的答案,因为它在概念上是正确的!然后我就可以投票了。
  • 太棒了,感谢您的帮助 =)。
  • @AnuragKapur - 好点...即将编辑。
【解决方案2】:

我建议不要使用简单的字符串操作路线。它更冗长,更容易出错。您不妨从内置类中获得一些帮助,然后利用您使用 URL(以“&”分隔的参数)的知识来指导您的实现:

String queryString = new URL("http://tesing12/testds/fdsa?communityUuid=45352-32452-52").getQuery();

String[] params = queryString.split("&");

String communityUuid = null;
for (String param : params) {
    if (param.startsWith("communityUuid=")) {
        communityUuid = param.substring(param.indexOf('=') + 1);
    }
}

if (communityUuid != null) {
    // do what you gotta do
}

这使您可以检查 URL 的格式是否正确,并避免类似命名参数可能引起的问题(字符串操作路由将报告“abc_communityUuid”和“communityUuid”的值) .

此代码的一个有用扩展是在您迭代“参数”时构建一个映射,然后在映射中查询您想要的任何参数名称。

【讨论】:

  • 这比我的回答好。
  • 注意参数名和值需要通过URLDecoder.decode()来传递。
猜你喜欢
  • 2015-12-22
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-30
  • 2011-01-23
  • 2014-10-28
  • 2012-01-25
相关资源
最近更新 更多