In einem gegebenen String wie diesem
%Vor% Ich muss einen customer
und einen yyyyMMdd
Zeitstempel ersetzen.
Um den Platzhalter customer
zu ersetzen, könnte ich StrSubstitutor
von Apache Commons verwenden. Aber wie ersetzt man SimpleDateFormat
? Wir laufen in einer Spring Environment, also ist Spring EL
eine Option?
Das Markup für die Platzhalter ist nicht festgelegt, es ist in Ordnung, wenn eine andere Bibliothek syntaktische Änderungen benötigt.
Dieser kleine Test zeigt das Problem:
%Vor% Warum verwenden Sie nicht stattdessen MessageFormat
?
Oder mit String.format
Wie NilsH vorgeschlagen hat, ist MessageFormat für diesen Zweck wirklich nett. Um benannte Variablen zu haben, können Sie MessageFormat hinter Ihrer Klasse verbergen:
%Vor%Und Sie müssen Ihren Testfall anpassen:
%Vor% Ich habe Generika entfernt und diese durch String ersetzt. Auch isPlaceholder
und getPlaceholderValue
sind fest codiert und erwarten $ {value} Syntax.
Aber das ist nur die Idee, um Ihr Problem zu lösen. Verwenden Sie dazu die Methoden von StrSubstitutor
(verwenden Sie einfach is oder make FormattedStrSubstitutor extends StrSubstitutor
).
Sie können zum Beispiel auch $ d {Wert} für die Datumsformatierung und $ foo {Wert} für die Formatierung von foo verwenden.
AKTUALISIEREN
Konnte nicht schlafen ohne vollständige Lösung. Sie können diese Methode zu FormattedStrSubstitutor
class hinzufügen:
Ihr Testfall ist wie in Ihrer Frage (kleine Änderungen im Platzhalter):
%Vor%Gleiche Einschränkung wie zuvor; keine Generika und Fix Präfix und Suffix für Platzhalter.
Tags und Links java apache-commons spring-el