Ich versuche, eine Funktion zu schreiben, um Substitutionen von Umgebungsvariablen in Java durchzuführen. Also wenn ich eine Zeichenfolge hätte, die so aussieht:
Der APPDATA-Pfad des Benutzers $ {USERNAME} lautet $ {APPDATA}.
Ich möchte, dass das Ergebnis lautet:
Der Pfad des Benutzers msmith's APPDATA ist C: \ Benutzer \ msmith \ AppData \ Roaming.
Bisher sieht meine fehlerhafte Implementierung so aus:
%Vor% Unter Verwendung des obigen Beispieltextes gibt matcher.matches()
false zurück. Wenn mein Beispieltext jedoch ${APPDATA}
ist, funktioniert es.
Kann jemand helfen?
Sie möchten % co_de nicht verwenden % Übereinstimmungen versuchen, die gesamte Eingabezeichenfolge abzugleichen.
Versucht, die gesamte Region mit dem Muster abzugleichen.
Was Sie wollen, ist matches()
. Das passt zu jeder Instanz Ihres Musters. Lesen Sie die Dokumentation zu while(matcher.find()) {
.
Innerhalb jeder Übereinstimmung ist find()
die gesamte übereinstimmende Zeichenfolge ( group 0
) und ${appdata}
ist group 1
part.
Ihr Endergebnis sollte etwa so aussehen:
%Vor%Ich sehe, Sie haben bereits eine Antwort akzeptiert. Wenn Sie jedoch den Code nicht selbst schreiben möchten, hat die Apache Commons Lang-Bibliothek eine Klasse namens StrSubstitutor . Es macht genau das.
Wenn Sie nicht gerade versuchen, Dinge von Grund auf neu zu erstellen, sollten Sie sich nicht wirklich die Mühe machen, Ihre eigene Template-Engine zu implementieren - es gibt Mengen bereits verfügbar .
Sehr gut ist FreeMaker (mit Java API ). Hier ist ein Tutorial: Ссылка ,