Groovy用唯一的数字替换字符串中的一个特定单词

Groovy用唯一的数字替换字符串中的一个特定单词,groovy,Groovy,用给定字符串中的唯一数字替换每个单词nullnull 每次更换都应该是唯一的编号。时间戳,如果可能的话 AMOUNTUSTOMNOTESRKNOTESY,AMOUNTURRNOTESNAMOUNTYAMOUNTOPAYMNOTESNTMNOTESTHODNOTES,AMOUNT,PAYMNOTESNTMNOTESTHOD,NOTES,BankTransDate,BanktransRef, 3050346630503466,BanktransRefAMOUNTURRNOTESNAMOUNTYAMO

用给定字符串中的唯一数字替换每个单词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,

为了教学,我给大家举了以下例子。首先,因为它是groovy,所以不必有类和主方法。第二,这不是最理想的方法,但它是一个很好的例子。第三,您可以尝试将时间戳的格式设置为只包含秒或您喜欢的内容。如果希望行中的每个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

通常,人们会显示他们试图解决问题的代码。不尝试就要求解决方案不是最好的方式。我已经添加了代码。感谢您的快速更新。非常感谢你的努力。在这里,我们尝试了.splitEachLine,data.readLines.splitEachLine,获取错误,如>>捕获的:groovy.lang.MissingMethodException:方法java.util.ArrayList.splitEachLine的签名不适用于参数types@Marc替换时我没有得到唯一的号码。使用splitline cmd
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