Text via RegEx durchsuchen und teile ersetzten

Alex04

Bekanntes Mitglied
Hallo,
ich brauche für eine Applikation einen Replacement-Mechanismus.

Ich habe beispielsweise nachfolgenden String:
test

abcccddc${n.name}cvsdfsdfsdfs
sdfsd${aasdn.name_9.cd}

${t.value}
sdefswfe


${n.y}wefw
Nun möchte ich gerne jedes Vorkommen von ${...} ersetzen durch den Inhalt (...).
Die Frage ist wie mache ich das am Besten?

Code:
private static final String OUTPUT_VARIABLE_REGEX = "[${][a-zA-Z]+[a-zA-Z0-9.-_]*[}]";


private void cleanOutput() {
		Pattern lPattern = Pattern.compile(OUTPUT_VARIABLE_REGEX);
		Matcher lMatcher = lPattern.matcher(outputContent);
		while(lMatcher.find()) {
			int lStart = lMatcher.start();
			int lEnd = lMatcher.end();
//??
		}
	}

Ich möchte das ganze so variabel wie mögliche halten, d.h. wenn ich morgen hergehe und das Pattern auf %{..} ändere, wäre es schön wenn alles noch funktioniert, denn sonst könnt ich gleich mit substring usw arbeiten...

Vielen Dank schon mal für eure Hilfe
Lg
Alex
 
Java:
String s ="södfasölkdfalj${name}asdfaljksf";
    	
    	System.out.println(s.replaceAll("\\$\\{.*?\\}", " AmunRa "));


vl. sowas?
 
Hallo und erstmal danke für die Antwort.

Leider aber nicht ganz passend, denn ich will "AmunRa" nicht angeben müssen.

Er soll automatisch das komplette Statement ${xyz} durch den Inhalt zwischen den Klammern also xyz ersetzen.
"xyz" ist variabel und darf deswegen nicht wie AmunRa hartcodiert werden...

LG
Alex
 
Das ist genau die Lösung, die ich gesucht habe!
Danke!

Allerdings versteh ich nicht warum das funktioniert. JavaDoc steht dazu nix drin, hast du vielleicht nen Link für mich?

Besten Dank nochmal!

Lg
Alex
 

Neue Themen


Zurück
Oben