字符串格式中的命名占位符
2022-08-31 05:51:33
在Python中,在格式化字符串时,我可以按名称而不是按位置填充占位符,如下所示:
print "There's an incorrect value '%(value)s' in column # %(column)d" % \
{ 'value': x, 'column': y }
我想知道这在Java中是否可行(希望没有外部库)?
在Python中,在格式化字符串时,我可以按名称而不是按位置填充占位符,如下所示:
print "There's an incorrect value '%(value)s' in column # %(column)d" % \
{ 'value': x, 'column': y }
我想知道这在Java中是否可行(希望没有外部库)?
StrSubstitutor of jakarta commons lang是一种轻量级的方法,只要你的值已经正确格式化。
Map<String, String> values = new HashMap<String, String>();
values.put("value", x);
values.put("column", y);
StrSubstitutor sub = new StrSubstitutor(values, "%(", ")");
String result = sub.replace("There's an incorrect value '%(value)' in column # %(column)");
以上结果是:
“列 # 2 中的值 '1' 不正确”
使用 Maven 时,您可以将此依赖项添加到 pom.xml:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
不完全是,但您可以使用 MessageFormat 多次引用一个值:
MessageFormat.format("There's an incorrect value \"{0}\" in column # {1}", x, y);
上述操作也可以使用 String.format() 来完成,但是如果您需要构建复杂的表达式,我发现 messageFormat 语法更干净,而且您不需要关心要放入字符串中的对象的类型