当前位置:  开发笔记 > 编程语言 > 正文

Java MessageFormat - 如何在单引号之间插入值?

如何解决《JavaMessageFormat-如何在单引号之间插入值?》经验,为你挑选了3个好方法。

我在使用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  values ( {1}, {2}, {3},  )"

如您所见,问题是由单引号括起的任何目标位置都不会被参数替换.我尝试使用像这样的双引号:''{1}''和像这样的转义字符:\'{1}\'但它仍然给出相同的结果.

编辑:我忘了提到我也试过了'''{1}'''.结果是:"insert into values ( '{1}', '{2}', '{3}', )".它保留了原始引号,但仍未插入值.

我该如何解决这个问题?为了记录,我使用的是JDK 6u7.



1> serg..:

我刚试过双引号,它对我来说很好用:

MessageFormat messageFormat = new MessageFormat("insert into {0} values ( ''{1}'', ''{2}'', ''{3}'', {4} )");
Object[] args = {"000", "111", "222","333","444","555"};
String result = messageFormat.format(args);

结果是:

insert into 000 values ( '111', '222', '333', 444 )

这是你需要的吗?



2> Aidos..:

很抱歉,如果这不在旁边,但看起来您正在尝试复制已在JDBC中的PreparedStatement.

如果您正在尝试创建针对数据库运行的SQL,那么我建议您查看PreparedStatement,它已经完成了您尝试执行的操作(语法略有不同).

对不起,如果这不是你在做什么,我只是想我会指出它.



3> Chris Boran..:

String中,一对单引号可用于引用除单引号之外的任何任意字符.例如,模式字符串"'{0}'"表示字符串"{0}",而不是FormatElement.单引号本身必须用''整个a中加倍的单引号表示String.例如,模式字符串"'{''}'"被解释为序列'{(引用的开始和左大括号), ''(单引号),和}'(右大括号和报价的端部) '{''}'(援引左和右大括号) :代表字符串"{'}",而不是 "{}".

来自:MessageFormat(Java平台SE 8)

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有