MessageFormat no formatea cuando se incluyen comillas simples

Estoy pasando texto que es una combinación de {} relleno y texto. Estoy tratando de llenar {} con algunos valores e intenté usar 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));

SALIDA

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}

preguntado el 12 de junio de 12 a las 12:06

2 Respuestas

La comilla simple debe escaparse usando una comilla simple doble:

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

Respondido el 12 de junio de 12 a las 12:06

Inesperado, pero esto también solucionó mi problema :) Usando template = template.replace("'", "''"); antes de llamar MessageFormat.format() esta limpio. - BullyWiiPlaza

Mi error fue que no usé el valor devuelto por el método 'formato(..)'

Codigo erroneo:

MessageFormat.format(sss, testArgs);
System.out.println(sss);

Código correcto:

String newString = MessageFormat.format(sss, testArgs);
System.out.println(newString);

Respondido 22 Jul 20, 15:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.