假设我有一个这样的字符串:"/c1/client/{clientId}/field/{fieldId}/version/{versionId}/file/{filename}"
我想用实际值替换大括号内的所有值,因此链接看起来像这样:
"c1/client/Tudor/field/search/version/1/file/hello.txt".
我怎么能以不限制使用参数数量的方式做到这一点?因为我有一些请求有4个参数(比如这个)而其他只有一个参数,或者没有。做这个的最好方式是什么?
编辑:我需要类似的内容:搜索{}之间的任何值的字符串。如果字符串包含{value},则取所有{values}并替换为参数。
答案 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);