Java使用占位符生成字符串

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (64)

我正在寻找的东西来实现以下目标:

String s = "hello {}!";
s = generate(s, new Object[]{ "world" });
assertEquals(s, "hello world!"); // should be true

我可以自己写,但是在我看来,我曾经看到过一个这样做过的库,可能是slf4j记录器,但我不想写日志消息。我只想生成字符串。

你知道一个这样做的library吗?

提问于
用户回答回答于

参见String.format方法。

String s = "hello %s!";
s = String.format(s, "world");
assertEquals(s, "hello world!"); // should be true
用户回答回答于

StrSubstitutor 来自Apache Commons Lang的命名占位符可用于字符串格式化:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-text</artifactId>
    <version>1.1</version>
</dependency>

https://commons.apache.org/proper/commons-lang/javadocs/api-3.4/org/apache/commons/lang3/text/StrSubstitutor.html :

用值替换字符串中的变量。 这个类接受一段文本并替换它中的所有变量。变量的默认定义是$ {variableName}。前缀和后缀可以通过构造函数和设置方法进行更改。 变量值通常从映射中解析出来,但也可以从系统属性中解析出来,或者通过提供一个自定义变量解析器来解析。

例:

String template = "Hi ${name}! Your number is ${number}";

Map<String, String> data = new HashMap<String, String>();
data.put("name", "John");
data.put("number", "1");

String formattedString = StrSubstitutor.replace(template, data);

扫码关注云+社区