2012-05-10 8 views
26

Ist es möglich, einen einfachen String-Ersatz in Großbuchstaben zu machen, wo Platzhalter/Token nicht verwendet werden können.Gradle String Replacement - keine Platzhalter

Zum Beispiel: gegeben temp.txt ersetzen alle Vorkommen von xxx mit yyy.

+1

Was meinen Sie _'... wo Platzhalter/Token nicht used'_ werden kann? –

+0

Die Beispiele, die ich gesehen habe, scheinen $ {xxx} oder @ xxx @ zu erfordern, im Gegensatz zu nur xxx - vielleicht verstehe ich die Funktionalität nicht? – user568280

Antwort

3

Ich nehme an, Sie sprechen über Ressourcenverarbeitung. In diesem Fall können Sie die Freiform filter Methode verwenden:

processResources { 
    filter { String line -> line.replace(...) } 
} 
+2

Können Sie Ihr Beispiel ausarbeiten. – Ahmed

+10

Downvoted, weil kein Kontext angegeben wurde. Es ist auch nicht klar, wie eine einzige Datei verarbeitet werden könnte. – FelixM

+4

Es ist die Frage, die Kontext fehlt. Die Antwort setzt voraus, dass der Kontext die Ressourcenverarbeitung ist (siehe ersten Satz). –

43

Lesen Sie den Text in:

String contents = new File('whatever.txt').getText('UTF-8') 

Ersetzen Sie den Text

contents = contents.replaceAll('xxx', 'yyy') 

den Text schreiben wieder heraus

new File('replaced.txt').write(contents, 'UTF-8') 

Sie sollten sie in einer Aufgabe und Aufruf der Lage sein, zu wickeln die Aufgabe als normal

+0

gut !! wie man es in eine Aufgabe einpackt: https://docs.gradle.org/current/userguide/custom_tasks.html – OhadR

+1

Wie würden Sie das mit einer Regex machen, als ob Sie nicht genau das ersetzen wollen ** xxx ** oder ** xx1 ** oder ** 1xx1 **? –

Verwandte Themen