java - 使用 Groovy 将文本拆分两次

标签 java groovy

我想将此文本联系人分成 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/

相关文章:

java - graphql-java 和 hibernate - 查询中甚至未指定的延迟加载关系

java - JPA自动增量的差异

java - Socket收不到消息

java - Java 的 AVL 树实现

java - 从我的 Android 应用程序启动 Viber 调用请求

grails - grails run-app返回 “context initialization failed”的奇怪情况

hibernate - 麻烦将参数绑定(bind)到对象并成功保存()

java - 我如何使用 java、RestAssured 测试 Web 服务自动替换 Json 对象文件中的两个单独的 ID

sql - grails/groovy 控制台 VS war 文件 模糊方法 SQL

groovy - Gremlin/Groovy 组计数结果