2016-09-23 3 views
1

Ich lief heute ein Problem in dem folgenden Code Frühling mit:Was entspricht dem Muster.quote() für MessageFormat?

String tabTitle = messageSource.getMessage(tabName, new Object[] {}, tabName, locale) 

Dient die angezeigten Titel einer Reihe von Registerkarten am oberen Rand unserer Seite (eine Instanz von uPortal) zu erhalten. Das Problem ist, dass wenn tabName ein einfaches Anführungszeichen enthält, wird es automatisch aus dem Ergebnis entfernt. Zum Beispiel What's For Lunch wird Whats For Lunch.

Ich habe herausgefunden warum und es ist, weil der 3. Parameter in dieser Methode von dem Format sein soll, das in java.text.MessageFormat spezifiziert wird. 2 einfache Anführungszeichen sind erforderlich.

Da wir keine Parameter mit dem Format übergeben, kann ich alle Sonderzeichen in der tabName sicher entkommen, bevor Sie es als 3. Parameter übergeben. Ich könnte die einzelnen Anführungszeichen hier manuell durch 2 einfache Anführungszeichen ersetzen, aber was ich wirklich gerne hätte, wäre etwas wie Pattern.quote(), nur für die MessageFormat Sprache, die garantiert alle entkommen würde. Gibt es so etwas?

+1

Gibt es nicht, aber Sie können sicher die '' '→' '' 'Substitution machen, dann schließen Sie das ganze Ding in einfache Anführungszeichen ein. Doppelte Anführungszeichen werden auch innerhalb von Text mit einem Anführungszeichen richtig interpretiert. – VGR

+0

Danke, wenn Sie dies als Antwort hinzufügen, werde ich es akzeptieren. – xdhmoore

Antwort

1

Es gibt keine Methode dafür, aber das Einschließen des gesamten Textes in ASCII-Anführungszeichen wird dasselbe bewirken. Sie können ''' Substitution tun, wie Sie beschrieben haben, dann den Text mit ' umgeben. Vom MessageFormat documentation:

Zum Beispiel Musterkette "'{''}'" wird als eine Folge von '{ (Beginn des Zitierens und einer linken geschweiften Klammer) interpretiert, '' (Apostroph) und }' (eine rechte geschweifte Klammer und Ende Zitat), nicht'{' und '}' (zitierte linke und rechte geschweifte Klammern): Darstellung der Zeichenfolge "{'}", nicht "{}".

Verwandte Themen