JAVA:使用计数器格式化字符串

时间:2016-02-09 21:07:43

标签: java string formatting format string-formatting

我想根据之前定义的模板构建一个url:

public class Main {
public static void main(String[] args) {
    String unformattedUrl = "http://myweb.com?param[%1$d]=[%2$s]&param[%1$d]=[%3$s]&param[%1$d]=[%4$s]";
    System.out.println(String.format(unformattedUrl, 1, "first", "second", "third"));
}

}

我想在格式化后得到下一个字符串:

http://myweb.com?param[1]=[first]&param[2]=[second]&param[3]=[third]

问题是我在运行时获取参数,并且事先不知道它们的编号。

我可以将参数数组传递给String.format(...)函数,但我不知道如何添加计数器。

是否可以不使用循环,手动替换或连接?

1 个答案:

答案 0 :(得分:2)

请勿尝试使用String.format:循环执行此操作,并将其附加到StringBuilder

StringBuilder sb = new StringBuilder("http://myweb.com?");
for (int i = 0; i < params.length; ++i) {
  if (i != 0) sb.append("&");
  sb.append("param");
  sb.append(i + 1);
  sb.append("=");
  sb.append(escape(params[i]));
}
String url = sb.toString();