2012-05-10 27 views
26

Có thể thực hiện thay thế chuỗi đơn giản ở chế độ gradle không thể sử dụng chỗ dành sẵn/mã thông báo .Thay thế Chuỗi Gradle - không có phần giữ chỗ

Ví dụ: được cung cấp temp.txt thay thế tất cả các lần xuất hiện của xxx bằng yyy.

+1

Bạn không thể sử dụng trình giữ chỗ/mã thông báo'_ ở đâu? –

+0

Các ví dụ tôi đã thấy dường như yêu cầu $ {xxx} hoặc @ xxx @ chứ không phải chỉ xxx - có thể tôi hiểu nhầm chức năng? – user568280

Trả lời

3

Tôi cho rằng bạn đang nói về xử lý tài nguyên. Trong trường hợp đó, bạn có thể sử dụng phương thức filter dạng tự do:

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

Bạn có thể xây dựng ví dụ của mình không. – Ahmed

+10

Được giảm giá vì không có ngữ cảnh nào được đưa ra. Ngoài ra nó không phải là rõ ràng như thế nào một tập tin duy nhất có thể được xử lý. – FelixM

+4

Đó là câu hỏi thiếu ngữ cảnh. Câu trả lời giả định rằng ngữ cảnh là xử lý tài nguyên (xem câu đầu tiên). –

43

Đọc văn bản trong:

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

Thay thế văn bản

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

Viết văn bản ra một lần nữa

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

Bạn sẽ có thể quấn chúng vào một nhiệm vụ và cuộc gọi công việc như bình thường

+0

tốt !! làm thế nào để bọc nó trong một nhiệm vụ: https://docs.gradle.org/current/userguide/custom_tasks.html – OhadR

+1

Bạn sẽ làm điều này bằng regex như thế nào nếu bạn không biết thay thế chính xác ** xxx ** hoặc ** xx1 ** hoặc ** 1xx1 **? –

Các vấn đề liên quan