Ci sono già diverse domande su MessagingFormat in generale, ma non ho ancora trovato nulla che risponda alla mia domanda. Sono consapevole che le virgolette singole romperanno il modello. Se usi MessageFormat o Log4j qualcosa come "does not" può rompere possibili segnaposti.Escaping virgolette singole per Java MessageFormat
semplice esempio:
@Test
public void test() {
String pattern = "{0} doesn't show values ({1}, {2}, {3}, {4})";
final Object[] args = { "Testpattern", 100, 200, 300, 400 };
System.out.println(MessageFormat.format(pattern, args));
pattern = pattern.replaceAll("(?<!')'(?!')", "''");
System.out.println("Replaced singlequotes: " + MessageFormat.format(pattern, args));
}
uscita:
Testpattern doesnt show values ({1}, {2}, {3}, {4})
Replaced singlequotes: Testpattern doesn't show values (100, 200, 300, 400)
Quindi, se sostituisco tutte le virgolette singole con un regular expression, funzionerà. Ho appena creato l'espressione regolare cercando di sostituire solo "single singlequotes" usando l'espressione regolare lookahead/lookbehind.
espressione regolare sostituire esempi:
doesn't -> doesn''t
doesn''t -> doesn''t
doesn'''t -> doesn'''t
Mi chiedo solo, se qualsiasi utilità apache-commons (o qualsiasi altra libreria) esiste, che si occuperà delle "escapeSingleQuotes" Per me, invece di fornire la mia espressione regolare ...?
No, StringEscapeUtils.escapeEcmaScript() interromperà il MessageFormat/logging. (Output: Singlequotes sostituite: Testpattern non mostra valori ({1}, {2}, {3}, {4})) – proko