如何在Groovy中获取String的每一行的第一个单词

wir*_*iko 0 groovy jenkins-pipeline

我有一个方法返回一个多行的字符串.我想解析String并得到每行的第一个单词.

方法getText()返回:

Lorem ipsum dolor 
sit amet odio 
magnis vitae iaculis
Run Code Online (Sandbox Code Playgroud)

我只想得到

Lorem
sit
magnis
Run Code Online (Sandbox Code Playgroud)

我目前的代码是

        def projectString = getText()
        def projects = projectString.substring(0, projectString.indexOf(' '))
Run Code Online (Sandbox Code Playgroud)

当然,这只会得到第一行的第一个字.我可以在字符串上使用while循环基于新行,并使用substring上面的方法获得第一个单词,但我感觉Groovy有一种更加流行的方式.

最初我正在考虑在方法调用结果上使用管道,就像这样

def projects = getText() | sh "awk '{print $1}'"
Run Code Online (Sandbox Code Playgroud)

但我无法让它发挥作用.

Vya*_*nis 5

这是一个例子:

def projectString = """Lorem ipsum dolor
sit amet odio
magnis vitae iaculis"""

projectString = projectString
    .readLines()
    .collect { it[0.. it.indexOf(' ')] }
    .join("\n")

println projectString
Run Code Online (Sandbox Code Playgroud)

您可以在线查看:https://groovyconsole.appspot.com/script/5132242514870272

  • it [0 .. it.indexOf('')]`看起来很奇怪...我更喜欢`it.split()。head()` (2认同)