用参数替换大括号内的值

时间:2017-04-19 11:21:29

标签: java parsing parameters

假设我有一个这样的字符串:"/c1/client/{clientId}/field/{fieldId}/version/{versionId}/file/{filename}"

我想用实际值替换大括号内的所有值,因此链接看起来像这样:

"c1/client/Tudor/field/search/version/1/file/hello.txt".

我怎么能以不限制使用参数数量的方式做到这一点?因为我有一些请求有4个参数(比如这个)而其他只有一个参数,或者没有。做这个的最好方式是什么?

编辑:我需要类似的内容:搜索{}之间的任何值的字符串。如果字符串包含{value},则取所有{values}并替换为参数。

3 个答案:

答案 0 :(得分:0)

您可以解析@pathParameters并重定向到使用spring @controller创建的地址。如果这些是您所写的请求,那是正确的方法。

答案 1 :(得分:0)

如果是String:

var u = "/c1/client/{clientId}/field/{fieldId}/version/{versionId}/file/{filename}";
u.replace(/\{clientId\}/, "Tudor").replace(/\{fieldId\}/, "search").replace(/\{versionId\}/, 1).replace(/\{filename}/, "hello.txt");

答案 2 :(得分:0)

你可以试试这个

String str = "/c1/client/{clientId}/field/{fieldId}/version/{versionId}/file/{filename}";
Map<String, String> map = new HashMap<String, String>();
map.put("clientId", "Tudor");
map.put("fieldId", "search");
map.put("versionId", "1");
map.put("filename", "hello.txt");
for (Map.Entry<String, String> entry : map.entrySet()) {
str = str.replace("{" + entry.getKey() + "}", entry.getValue());
}
String newStr = str.substring(1);
System.out.println(newStr);