0

编辑 :

目标 :http://localhost:8080/api/upload/form/test/test

Is it possible to have some thing like `{a-b, A-B..0-9}` kind of pattern and match them and replace with value.

我有以下字符串

http://localhost:8080/api/upload/form/{uploadType}/{uploadName}

可以没有任何字符串,例如{uploadType}/{uploadName}.

如何用java中的一些值替换它们?

4

6 回答 6

1

[已编辑] 显然您不知道要寻找什么替代品,或者没有合理的有限地图。在这种情况下:

Pattern SUBST_Patt = Pattern.compile("\\{(\\w+)\\}");
StringBuilder sb = new StringBuilder( template);
Matcher m = SUBST_Patt.matcher( sb);
int index = 0;
while (m.find( index)) {
    String subst = m.group( 1);
    index = m.start();
    //
    String replacement = "replacement";       // .. lookup Subst -> Replacement here
    sb.replace( index, m.end(), replacement);
    index = index + replacement.length();
}

看,我现在真的期待+1。


[更简单的方法]String.replace()是一种“简单替换”且易于使用的方法;如果你想要正则表达式,你可以使用String.replaceAll().

对于多个动态替换:

public String substituteStr (String template, Map<String,String> substs) {
    String result = template;
    for (Map.Entry<String,String> subst : substs.entrySet()) {
        String pattern = "{"+subst.getKey()+"}";
        result = result.replace( pattern, subst.getValue());
    }
    return result;
}

这是一种快速简便的方法,首先。

于 2013-05-02T11:29:47.890 回答
0

您可以使用从 {uploadType} 开始的字符串直到结束。然后您可以使用“split”将该字符串拆分为字符串数组。第一个单元格(0)是类型,1是名称。

于 2013-05-02T11:26:43.360 回答
0
String s = "http://localhost:8080/api/upload/form/{uploadType}/{uploadName}";
String result = s.replace("uploadType", "UploadedType").replace("uploadName","UploadedName");

编辑:试试这个:

String r = s.substring(0 , s.indexOf("{")) + "replacement";
于 2013-05-02T11:27:03.877 回答
0

您可以通过以下方式使用替换方法:

    String s = "http://localhost:8080/api/upload/form/{uploadType}/{uploadName}";
    String typevalue = "typeValue";
    String nameValue = "nameValue";
    s = s.replace("{uploadType}",value).replace("{uploadName}",nameValue);
于 2013-05-02T11:25:40.327 回答
0

解决方案 1:

String uploadName = "xyz";
String url = "http://localhost:8080/api/upload/form/" + uploadName;

解决方案2:

String uploadName  = "xyz";
String url = "http://localhost:8080/api/upload/form/{uploadName}";
url.replace("{uploadName}",uploadName );

解决方案3:

String uploadName  = "xyz";
String url = String.format("http://localhost:8080/api/upload/form/ %s ", uploadName);
于 2013-05-02T11:31:22.347 回答
-1

UriBuilder正是您需要的:

UriBuilder.fromPath("http://localhost:8080/api/upload/form/{uploadType}/{uploadName}").build("foo", "bar");

结果是:

http://localhost:8080/api/upload/form/foo/bar
于 2013-05-02T11:31:55.113 回答