繁体   English   中英

Java Message Formatter无法正常工作

[英]Java Message Formatter is not working

我有String模板

xxxxxxxx xxxxx-xx: [{0}] xxxxxxx xxxxx xxxxxx xxxxxx [{1}] xxxxxx xxxx xxxxx'x xxxxx xxxxxx xxxx [{2}]

即使我提供的所有三个参数仍然不起作用

public static void main(String[] args) {
    String s = "xxxxxxxx xxxxx-xx: [{0}] xxxxxxx xxxxx xxxxxx xxxxxx [{1}] xxxxxx xxxx xxxxx'x xxxxx xxxxxx xxxx [{2}]";

    System.out.println(MessageFormat.format(s,"1","2","3"));
}

输出是:

xxxxxxxx xxxxx-xx: [1] xxxxxxx xxxxx xxxxxx xxxxxx [2] xxxxxx xxxx xxxxxx xxxxx xxxxxx xxxx [{2}]

看输出,它输出{2}而不是3 ,我找不到为什么它不起作用。 这是一个错误还是我遗失了什么?

你的问题在于单引号'你必须使用double ''而不是一个:

xxxxx''x

阅读有关单引号的文档( MessageFormat

在String中,一对单引号可用于引用除单引号之外的任何任意字符。 例如,模式字符串“'{0}'”表示字符串“{0}”,而不是FormatElement。 单引号本身必须在整个String中用双引号引用''。 例如,模式字符串“'{''}'”被解释为'{(引用开始和左大括号),'(单引号)和}'(右大括号和结束)的序列引用),而不是'{'和'}'(引用左右花括号):表示字符串“{'}”,而不是“{}”。

这确实是撇号,你需要用另一个撇号来逃避它,比如: ''xxx 它在doc btw:

在字符串中,''(两个单引号)表示单引号。

这是因为你有'在你的字符串。 你需要逃避它或你错过了一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM