所以,我们都应该知道可以通过以下方式将变量包含在字符串中:
String string = "A string " + aVariable;
有没有一种这样的方式:
String string = "A string {aVariable}";
换句话说:不需要关闭引号并添加加号。这样非常不美观。
所以,我们都应该知道可以通过以下方式将变量包含在字符串中:
String string = "A string " + aVariable;
有没有一种这样的方式:
String string = "A string {aVariable}";
换句话说:不需要关闭引号并添加加号。这样非常不美观。
你始终可以使用 String.format(....)。例如:
String string = String.format("A String %s %2d", aStringVar, anIntVar);
我不确定这是否足够吸引你,但它可以非常方便。它的语法与printf和java.util.Formatter相同。我经常使用它,特别是当我想显示表格形式的数字数据时。
format
比简单的字符串拼接表达式更有吸引力。在需要填充、数字格式化等操作时,format
才能发挥其优势。 - Stephen C"A String %s %2d".format(aStringVar, anIntVar)
… 是吗? - Stephen CasFormat
更有意义。当然,Eclipse 对静态导入的支持不太好,这使得使用当前的 String.format
有些麻烦。 - Maarten Bodewes这被称为字符串插值;在Java中并不存在这样的功能。
一种方法是使用String.format:
String string = String.format("A string %s", aVariable);
另一种方法是使用模板库,比如Velocity或者FreeMarker。
同时考虑一下java.text.MessageFormat
,它使用相关的语法来指定参数的索引。例如:
String aVariable = "of ponies";
String string = MessageFormat.format("A string {0}.", aVariable);
结果为包含以下内容的string
:
A string of ponies.
通常,该类用于数字和时间格式化。关于JFreeChart
标签格式化的示例在此处描述;类RCInfo
可格式化游戏状态面板。
String.format()
方法就不如此。 - SatchString.format()
方法好得多。 - undefinedString::formatted(Object... args)
的非静态字符串方法。String foo = "foo";
String bar = "bar";
String str = "First %s, then %s".formatted(foo, bar);
输出:
"先做 foo,然后再做 bar"
Apache Commons Text的StringSubstitutor
可以使用。请参阅该库的依赖信息以了解如何将其包含在项目中。
import org.apache.commons.text.StringSubstitutor;
// ...
Map<String, String> values = new HashMap<>();
values.put("animal", "quick brown fox");
values.put("target", "lazy dog");
StringSubstitutor sub = new StringSubstitutor(values);
String result = sub.replace("The ${animal} jumped over the ${target}.");
// "The quick brown fox jumped over the lazy dog."
String result = sub.replace("The number is ${undefined.property:-42}.");
// "The number is 42."
setEnableSubstitutionInVariables(true);
。Map<String, String> values = new HashMap<>();
values.put("b", "c");
values.put("ac", "Test");
StringSubstitutor sub = new StringSubstitutor(values);
sub.setEnableSubstitutionInVariables(true);
String result = sub.replace("${a${b}}");
// "Test"
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.10.0</version>
</dependency>
您可以使用字符串格式来在字符串中包含变量
我使用这段代码在字符串中包含了两个变量:
String myString = String.format("这是我的字符串 %s %2d", variable1Name, variable2Name);
String.format()
是Java语言内置的。 - ig0774