【问题标题】:Split a text twice with Groovy使用 Groovy 将文本拆分两次
【发布时间】:2026-02-09 05:05:02
【问题描述】:

我想将此文本联系人拆分为 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:没有方法签名:[Ljava.lang.String;.split() 适用于参数类型:(java.lang.String) 值:[ ] 可能的解决方案:split(groovy.lang.Closure)、wait()、sort()、init()、tail()、toList() 在 Script1.run(Script1.groovy:15)

谢谢。

【问题讨论】:

标签: java groovy


【解决方案1】:

你得到了这个例外,因为你在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(': ', '') 添加到清除号码和电子邮件值。

【讨论】:

  • 非常感谢。它运作良好。请问,如果“name”是一个由空格“”分隔的两个单词的句子,像这样:“lastname firstname”我怎样才能得到lastname和firstname?
  • 没关系,我解决了第二个问题。由于 "${data[0]}" 是一个字符串,所以我可以应用拆分方法: def lastname = "${data[0]}".split(' ')[0] def firstname = "${data [0]}".split(' ')[1] println lastname println firstname