2012-05-10 32 views
26

È possibile eseguire la sostituzione semplice delle stringhe in gradle in cui non è possibile utilizzare segnaposti/token .Sostituzione stringa gradiente - nessun segnaposto

Ad esempio: dato temp.txt sostituire tutte le occorrenze di xxx con yyy.

+1

Cosa intendi _'... dove segnaposto/gettoni non possono essere used'_? –

+0

Gli esempi che ho visto sembrano richiedere $ {xxx} o @ xxx @ in contrapposizione a solo xxx - forse sto fraintendendo la funzionalità? – user568280

risposta

3

Suppongo che tu stia parlando dell'elaborazione delle risorse. In tal caso, è possibile utilizzare il metodo a forma libera filter:

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

Puoi elaborare il tuo esempio. – Ahmed

+10

Downvoted perché non viene fornito alcun contesto. Inoltre non è chiaro come un singolo file possa essere elaborato. – FelixM

+4

È la domanda che manca di contesto. La risposta presuppone che il contesto sia l'elaborazione delle risorse (vedi prima frase). –

43

Leggere il testo in:

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

Sostituire il testo

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

Scrivere il testo di nuovo

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

si dovrebbe essere in grado di avvolgerli in un compito e la chiamata l'attività normale

+0

buono !! come avvolgerlo in un compito: https://docs.gradle.org/current/userguide/custom_tasks.html – OhadR

+1

Come faresti questo con una regex, come se non sapessi sostituire esattamente ** xxx ** o ** xx1 ** o ** 1xx1 **? –

Problemi correlati