我想将此文本联系人分成 3 个部分,用 -
分隔。
在每个部分我们都有:姓名、职务、电话号码和电子邮件。
然后我想用\n
分隔每个部分。
def contact = '''name1
Function1
: 1111
: name1@mail.com-name2
Function2
: 2222
: name2@mail.com-name3
Function3
: 3333
: name3@mail.com
'''
我已经试过了:
def contact_part = contact.split('-')
println contact_part[0]
def data = contact_part.split('\n') //line 15
println data[1]
但是我得到了这个错误:
groovy.lang.MissingMethodException: No signature of method: [Ljava.lang.String;.split() is applicable for argument types: (java.lang.String) values: [ ] Possible solutions: split(groovy.lang.Closure), wait(), sort(), init(), tail(), toList() at Script1.run(Script1.groovy:15)
谢谢。
最佳答案
你得到这个异常,因为你在 String[]
上调用了 .split()
。第一次拆分创建一个字符串数组,因此下一次拆分必须应用于该数组的每个元素。考虑以下示例:
def contact = '''name1
Function1
: 1111
: name1@mail.com-name2
Function2
: 2222
: name2@mail.com-name3
Function3
: 3333
: name3@mail.com
'''
contact.split('-').each { part ->
def data = part.split('\n').toList()
println "name: ${data[0]}, function: ${data[1]}, number: ${data[2].replace(': ', '')}, email: ${data[3].replace(': ', '')}"
}
我们按-
分割输入字符串,然后每个部分按\n
分割。对于每个拆分部分,我们打印控制台输出如下:
name: name1, function: Function1, number: 1111, email: name1@mail.com
name: name2 , function: Function2, number: 2222, email: name2@mail.com
name: name3, function: Function3, number: 3333, email: name3@mail.com
请注意,我添加了 .replace(': ', '')
来清理数字和电子邮件值。
关于java - 使用 Groovy 将文本拆分两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49553084/