簡體   English   中英

Groovy 將字符串中的特定單詞一一替換為唯一編號

[英]Groovy replace one by one specific word from string with unique number

用給定字符串中的唯一數字替換每個單詞“nullnull”

每個替換都應該是唯一的編號。 (如果可能,時間戳)

AMOUNTUSTOMNOTESRKNOTESY,AMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTES,AMOUNT,PAYMNOTESNTMNOTESTHOD,NOTES,BankTransDate,BanktransRef,
3050346630503466,BanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESPBanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESP,-1.15-1.15,PAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebitPAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebit,nullnull,06/13/202006/13/2020,nullnull,
3098017730980177,BanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESPBanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESP,-1.15-1.15,PAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebitPAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebit,nullnull,06/13/202006/13/2020,nullnull,
3100110031001100,BanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESPBanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESP,-1.15-1.15,PAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebitPAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebit,nullnull,06/13/202006/13/2020,nullnull,
3143046931430469,BanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESPBanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESP,-1.15-1.15,PAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebitPAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebit,nullnull,06/13/202006/13/2020,nullnull,
3147508531475085,BanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESPBanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESP,-1.15-1.15,PAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebitPAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebit,nullnull,06/13/202006/13/2020,nullnull,
import java.io.File 

class Dcoder {  

    static void main(String[] args) {

        String result7 = "******"
        Date latestdate = new Date();   
        int i   
        for (i = 0; i < result7.length(); i++) {  
            // String time=latestdate.getTime();
            result7 = result7.replaceFirst("nullnull",latestdate.getTime());   
        }
        println result7
    }
}

為了教學,我為您做了以下示例。 首先,因為是groovy,所以不必有class和main方法。 其次,這不是最理想的做法,但它是一個很好的例證。 第三,您可以試驗時間戳的格式,使其僅包含秒數或您喜歡的時間。 如果您希望行中的每個 nullnull 都具有不同的 tstamp,則必須嘗試使用例如.splitEachLine(",")循環遍歷行中的值

如果數據在您的控制范圍內,還可以考慮從源頭清理數據。

這是示例:

def data = '''AMOUNTUSTOMNOTESRKNOTESY,AMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTES,AMOUNT,PAYMNOTESNTMNOTESTHOD,NOTES,BankTransDate,BanktransRef,
3050346630503466,BanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESPBanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESP,-1.15-1.15,PAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebitPAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebit,nullnull,06/13/202006/13/2020,nullnull,
3098017730980177,BanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESPBanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESP,-1.15-1.15,PAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebitPAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebit,nullnull,06/13/202006/13/2020,nullnull,
3100110031001100,BanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESPBanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESP,-1.15-1.15,PAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebitPAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebit,nullnull,06/13/202006/13/2020,nullnull,
3143046931430469,BanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESPBanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESP,-1.15-1.15,PAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebitPAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebit,nullnull,06/13/202006/13/2020,nullnull,
3147508531475085,BanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESPBanktransRefAMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTESP,-1.15-1.15,PAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebitPAYMNOTESNTMNOTESTHODirect PAYMNOTESNTMNOTESTHODebit,nullnull,06/13/202006/13/2020,nullnull,
'''

newData = ''

data.readLines().each { line ->
    def tstamp = new Date().format('yyyy-MM-dd HH.mm.ss.SSSSS Z').toString()
    newData = newData + line.replaceAll("nullnull", tstamp) + "\n"
}

println newData

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM