JAVA:用计数器格式化字符串
JAVA: format strings with a counter
我想根据之前定义的模板构建一个url:
public class Main {
public static void main(String[] args) {
String unformattedUrl = "http://myweb.com?param[%1$d]=[%2$s]¶m[%1$d]=[%3$s]¶m[%1$d]=[%4$s]";
System.out.println(String.format(unformattedUrl, 1, "first", "second", "third"));
}
}
我想在格式化后得到下一个字符串:
http://myweb.com?param[1]=[first]¶m[2]=[second]¶m[3]=[third]
问题是我在运行时获取参数,但事先不知道它们的数量。
我可以将参数数组传递给String.format(...)
函数,但我不知道如何添加计数器。
是否可以不使用循环、手动替换或连接?
不要尝试直接使用 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();
我想根据之前定义的模板构建一个url:
public class Main {
public static void main(String[] args) {
String unformattedUrl = "http://myweb.com?param[%1$d]=[%2$s]¶m[%1$d]=[%3$s]¶m[%1$d]=[%4$s]";
System.out.println(String.format(unformattedUrl, 1, "first", "second", "third"));
}
}
我想在格式化后得到下一个字符串:
http://myweb.com?param[1]=[first]¶m[2]=[second]¶m[3]=[third]
问题是我在运行时获取参数,但事先不知道它们的数量。
我可以将参数数组传递给String.format(...)
函数,但我不知道如何添加计数器。
是否可以不使用循环、手动替换或连接?
不要尝试直接使用 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();