繁体   English   中英

Java在斜线之间或之后替换URL中的任何数字

[英]Java replace any numbers in a URL between or after slashes

在过去的一个小时里,我一直在想办法解决Java的问题(我的应用程序是Java的,所以我必须使用它)。 我正在尝试用井号标签替换RESTful URL中的任何数字(即使它具有前导零),以便我们可以跟踪一次特定调用的次数,而与ID无关。 以下是一些我想要做的事的例子:

http://host.com/api/person/1234必须为http://host.com/api/person/#####

http://host.com/api/person/1234/jobs需要为http://host.com/api/person/#####/jobs

http://host.com/api/person/1234/jobs/321必须为http://host.com/api/person/#####/jobs/#####

http://host.com/api/person/abc1234/jobs需要停留http://host.com/api/person/abc1234/jobs

将插入的主题标签将始终为5个主题标签,以使内容保持一致。 我使用两个步骤来完成这项工作,我试图找出一种使用regex和replaceAll一步实现的方法,尽管如果有人知道一步更好的方法,我也很乐意。

您可以通过以下简单的regex使用replaceAll ()方法:

(?<=/)\\d+

这意味着“在斜杠( / )后匹配所有数字”。

例:

List<String> urls = Arrays.asList("http://host.com/api/person/1234", "http://host.com/api/person/1234/jobs", "http://host.com/api/person/1234/jobs/321", "http://host.com/api/person/abc1234/jobs", "http://host.com/api/person/1234abc/jobs");
for (int i = 0; i < urls.size(); i++) {
   urls.set(i, urls.get(i).replaceAll("(?<=/)\\d+(?=/|$)", "#####"));
}
System.out.println(urls.toString());

// Result:
// [http://host.com/api/person/#####, http://host.com/api/person/#####/jobs, http://host.com/api/person/#####/jobs/#####, http://host.com/api/person/abc1234/jobs, host.com/api/person/1234abc/jobs]

Ideone

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM