当前位置: 首页 > 知识库问答 >
问题:

使用Groovy将文本拆分两次

傅增
2023-03-14

我想把这个文本联系分成三个部分,由-分隔。

在每个部分中,我们有:名称、功能、号码和电子邮件。

然后我想用\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]

但我有一个错误:

棒极了。lang.MissingMethodException:没有方法[Ljava.lang.String;.split]的签名。split()适用于参数类型:(java.lang.String)值:[]可能的解决方案:split(groovy.lang.Close)、wait()、sort()、init()、tail()、Script1处的toList()。运行(Script1.groovy:15)

谢谢你。

共有1个答案

赫连正初
2023-03-14

您得到了这个异常,因为您调用了。在字符串[]上拆分()。第一次拆分将创建一个字符串数组,因此必须对该数组的每个元素应用下一次拆分。考虑下面的例子:

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

请注意,我添加了。替换(': ', '')以清除数字和电子邮件值。

 类似资料:
  • 问题内容: 我有这样的输入文件: 所需的任务是按由特殊行分隔的部分读取文件,在这种情况下,该行为空行,例如[out]: 通过这样做,我一直在获得所需的输出: 但是,如果特殊行是以例如以下开头的行: 我必须这样做: 如果我允许拥有分隔符参数,则可以尝试以下操作: 但是有没有办法我不对所有可能的分隔符进行硬编码? 问题答案: 传递谓词怎么样? 用法:

  • 我有多个文本文件,大约有100,000行,我想将它们拆分成每个5000行的较小文本文件。 我曾经: 这将创建文件: 没有扩展名的文件。我只是想给他们打个类似的电话: 或者,如果这不可能,我只希望他们有“.txt”扩展名。

  • 我有一个Akka Streams,我想根据谓词将其分成两个源。 例如。有一个源(类型被有意简化): 还有两种方法: 我希望能够拆分根据谓词,并将右侧部分传递给方法,左侧部分传递给方法。 我尝试使用拆分器,但它需要s结尾。

  • 问题内容: 我只需要此XML的HEADLINE,仅在标记之间。还必须连续不断地打印消息。我怎样才能做到这一点。 问题答案: 我将为此使用javax.xml.xpathJava SE 5中包含的API。

  • 我遇到了Streams的或方法的问题,因为spliterator跳过特定模式(奇数或偶数)的文本部分。应该做什么来处理文本的所有部分?我在这里的方法: 示例输入为: 它将跳过Faysal:2和Faysal:4

  • 问题内容: 我正在尝试将一个大型xml文件拆分为多个文件,并在AWK脚本中使用了以下代码。 上面的代码生成一个名称为“ fileItem_1”,“ fileItem_2”,“ fileItem3”等的xml文件列表。 但是,我希望文件名类似于“ item_XXXXX”,其中XXXXX是XML内的一个节点-如下图所示 因此,基本上我希望“ id”节点为文件名。谁能帮我这个忙吗? 问题答案: 我不会用