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

标签 java string formatting format string-formatting

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

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(...) 函数,但我不知道如何添加计数器。

是否可以在没有循环、手动替换或连接的情况下实现它?

最佳答案

不要尝试直接使用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();

关于JAVA:使用计数器格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35302214/

相关文章:

java - Akka添加slf4j时出现ClassNotFoundException

java - 在更改时自动编译 JasperReports

java - 等待\n 而不是 EOF C# SslStream

C# 字典性能 : Default string Comparer's GetHashCode() allocates memory in violation of guidelines, 从而破坏性能?

python - 在 for 循环中运行 replace() 方法?

java - 玩2.0 : Push a URL parameter to the view

c - 如何解释这段代码 : if (strstr(line, *argv) != EOF) != except

javascript - 正则表达式以及将字符串转换为数组以及来回 Javascript

java - java中的双数字格式化

c++ - 将两个数字合二为一。示例 : 123 and 456 become 123456