Java 生成带占位符的字符串

新手上路,请多包涵

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

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

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

你知道做这件事的图书馆吗?

原文由 ndrizza 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 607
2 个回答

参见 String.format 方法。

 String s = "hello %s!";
s = String.format(s, "world");
assertEquals(s, "hello world!"); // should be true

原文由 Grzegorz Żur 发布,翻译遵循 CC BY-SA 3.0 许可协议

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);

原文由 Justinas Jakavonis 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏