2012-05-10 6 views
26

yer tutucularının/tokenlerinin kullanılamaması için basit bir dize değişimi yapmak mümkün mü? Örneğin, temp.txt verilen xxx ile yyy arasındaki tüm durumları değiştirin. YineKordon Dizgisi Değiştirme - yer tutucu yok

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

Bir görev ve çağrı içine sarmak mümkün olmalıdır yaz değiştirin metni metin

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

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

dışarı:

+1

Ne demek _'... tutucuları/belirteçleri used'_ edilemez: O durumda, serbest biçimli filter yöntemi kullanabilirsiniz? –

+0

Gördüğüm örnekler sadece xxx'in aksine $ {xxx} veya @ xxx @ gerektiriyor - belki de işlevselliği yanlış anlamıyorum? – user568280

cevap

3

Kaynak işleme hakkında konuştuğunuzu varsayalım.

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

Örneğini detaylandırır mısın? – Ahmed

+10

Hiçbir bağlam verilmediği için reddedildi. Ayrıca, tek bir dosyanın nasıl işlenebileceği açık değildir. – FelixM

+4

Eksik içerik olan soru bu. Cevap, içeriğin kaynak işleme olduğunu varsayar (ilk cümleye bakınız). –

43

metni okuyun Görev normal

+0

iyi !! Bir görevde nasıl sarılır: https://docs.gradle.org/current/userguide/custom_tasks.html – OhadR

+1

Tam olarak nasıl değiştireceğinizi bilmiyorsanız, bunu bir regex ile nasıl yaparsınız ** xxx ** veya ** xx1 ** veya ** 1xx1 **? –