我有一个这样的字符串模板:
http://server/{x}/{y}/{z}/{t}/{a}.json
我有价值观:
int x=1,y=2,z=3,t=4,a=5;
我想知道哪种方法可以将{x}
替换为x
的价值,y,z,t,z
也是如此?
答案 0 :(得分:16)
String template = "http://server/%s/%s/%s/%s/%s.json";
String output = String.format(template, x, y, z, t, a);
答案 1 :(得分:4)
使用MessageFormat.java
MessageFormat messageFormat = new MessageFormat("http://server/{0}/{1}/{2}/{3}/{4}.json");
Object[] args = {x,y,z,t,a};
String result = messageFormat.format(args);
答案 2 :(得分:4)
另一种方法(C# way ;)
):
MessageFormat mFormat = new MessageFormat("http://server/{0}/{1}/{2}/{3}/{4}.json");
Object[] params = {x, y, z, t, a};
System.out.println(mFormat.format(params));
<强>输出:强>
http://server/1/2/3/4/5.json
答案 3 :(得分:3)
http://server/{x}/{y}/{z}/{t}/{a}.json
如果您可以将其更改为http://server/{0}/{1}/{2}/{3}/{4}.json
,则可以使用MessageFormat
:
String s = MessageFormat.format("http://server/{0}/{1}/{2}/{3}/{4}.json", x, y, z, t, a);
答案 4 :(得分:1)
要在示例中准确替换占位符,您可以使用StrinUtils.replaceEach
org.apache.commons.lang.StringUtils.replaceEach(
"http://server/{x}/{y}/{z}/{t}/{a}.json",
new String[]{"{x}","{y}","{z}","{t}","{a}"},
new String[]{"1","2","3","4","5"});
但是,MessageFormat
会更有效率,但需要将x替换为0,y替换为1等。
如果您将格式更改为
"http://server/${x}/${y}/${z}/${t}/${a}.json",
您可以考虑使用Velocity,它具有专门用于查找$ {和}出现的解析器。
最有效的方法是编写自己的解析器,搜索下一个{出现,而不是},而不是替换占位符。
答案 5 :(得分:0)
这可能是可能的答案。
String url= "http://server/{x}/{y}/{z}/{t}/{a}.json";
int x=1,y=2,z=3,t=4,a=5;
url = url.replaceAll("\\{x\\}", String.valueOf(x));
url = url.replaceAll("\\{y\\}", String.valueOf(y));
url = url.replaceAll("\\{z\\}", String.valueOf(z));
url = url.replaceAll("\\{t\\}", String.valueOf(t));
url = url.replaceAll("\\{a\\}", String.valueOf(a));
System.out.println("url after : "+ url);