【发布时间】:2010-09-16 10:27:22
【问题描述】:
我在使用 java.text.MessageFormat 对象时遇到问题。
我正在尝试创建 SQL 插入语句。问题是,当我做这样的事情时:
MessageFormat messageFormat = "insert into {0} values ( '{1}', '{2}', '{3}', {4} )";
Object[] args = { str0, str1, str2, str3, str4 };
String result = messageFormat.format(args);
我以result 的价值得到这个:
"insert into <str0> values ( {1}, {2}, {3}, <str4> )"
如您所见,问题在于任何用单引号括起来的目标位置都不会被参数替换。我尝试过使用像这样的双单引号:''{1}'' 和像这样的转义字符:\'{1}\',但它仍然给出相同的结果。
编辑:我忘了提到我也试过'''{1}'''。结果是:"insert into <str0> values ( '{1}', '{2}', '{3}', <str4> )"。它保留了原始引号,但仍未插入值。
我该如何解决这个问题?作为记录,我使用的是 JDK 6u7。
【问题讨论】:
-
事实证明
''{0}''确实有效。我只需要彻底清理我的构建目录,因为我的构建过程没有正确更新而且我没有意识到这一点。糟糕! -
This answer 解释了需要额外报价的原因。
标签: java