在过去的一个小时里,我一直在用头撞墙,试图想出一种使用 Java 的 Eloquent 方法(应用程序是用 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 个主题标签。我使用两个步骤完成此工作,我试图找出一种使用正则表达式和replaceAll 来完成此操作的方法,尽管如果其他人知道更好的方法来一步完成它,我也对此持开放态度。
最佳答案
您可以使用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]
关于Java 替换 URL 中斜杠之间或之后的任何数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38318726/