我有一些无法解释的行为java.util.logging
。让我们看一下这两个示例:
First:
boolean var = false;
log.log( Level.WARNING, "Cant {0}", new Object[] { var } );
output:
Cant false
Second:
boolean var = false;
log.log( Level.WARNING, "Can't {0}", new Object[] { var } );
output:
不能{0}
为什么包含撇号 ( ' ) 会导致记录器不扩展令牌?
看来您使用的任何日志记录机制都在使用MessageFormat
内部类。如果是这样,那么您需要转义撇号字符,因为它是单引号字符。单引号字符用于引用不需解释的文本。
消息格式javadoc:
在字符串中,一对单引号可用于引用除单引号之外的任意字符。例如,模式字符串“'{0}'”表示字符串“{0}”,而不是 FormatElement。单引号本身必须由以下形式表示双单引号 ''整个字符串。
(强调我的)
Try
log.log( Level.WARNING, "Can''t {0}", new Object[] { var } );
这段代码:
MessageFormat mf = new MessageFormat("Can''t {0}");
System.out.println(mf.format(new Object[] {false}));
产生这个输出:
Can't false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)