包含单引号时,MessageFormat不格式化

Dev*_*v G 12 java

我传递的文字是{}填充和文本的组合.我试图用{}填充{}并尝试使用MessageFormat.

String sss = "{0}SomeText{1}\'.{2}SomeText{2}SomeText{0}{0}SomeText{2}{0}SomeText{0}{1}SomeText{0}{2}{0}{0}{1}{0}{2}{0}{0}{2}{0}{0}{1}{0}{2}{0}";

Object[] testArgs = {"nits1", "Nits2","nits#"};

System.out.println(MessageFormat.format(sss,testArgs));
Run Code Online (Sandbox Code Playgroud)

OUTPUT

nits1SomeTextNits2.{2}SomeText{2}SomeText{0}{0}SomeText{2}{0}SomeText{0}{1}SomeText{0}{2}{0}{0}{1}{0}{2}{0}{0}{2}{0}{0}{1}{0}{2}{0}
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 32

必须使用双引号转义单引号:

String sss = "{0}SomeText{1}''.{2}S..."
Run Code Online (Sandbox Code Playgroud)

  • 出乎意料,但这也解决了我的问题:)在调用`MessageFormat.format()`之前使用`template = template.replace(“'”,“''”);`是干净的。 (2认同)