我需要在Java中的字符串中找到类似"${someName}"
的表达式,并用一些值替换它们。
目前,我正在使用StringBuilder
及其indexOf()
和replace()
方法来实现相同目标。
但我想知道使用正则表达式而不是所有这些是否是更好的方法。
答案 0 :(得分:0)
Java中没有标准库可以做到这一点。 (有第三方库;例如Freemarker。)
如果您准备好更改模式语法,我将在Java SE库中提出一些备选方案。
Formatter
类(以及相应的String.format(...)
快捷方法)会将参数替换为格式字符串,同时对文本转换执行各种值。它支持编号和无编号的位置替换。例如(取自javadoc):
formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
产生
" d c b a"
MessageFormat
类具有更简单(更清晰)的语法。例如(取自javadoc):
int fileCount = 1273;
String diskName = "MyDisk";
Object[] testArgs = {new Long(fileCount), diskName};
MessageFormat form = new MessageFormat(
"The disk \"{1}\" contains {0} file(s).");
System.out.println(form.format(testArgs));
生成如下输出:
The disk "MyDisk" contains 0 file(s).
The disk "MyDisk" contains 1 file(s).
The disk "MyDisk" contains 1,273 file(s).
它还可以进行值转换和格式化,甚至还有一种方法可以进行条件(选择)格式。