使用Groovy,我希望抓住一个制表符分隔线的两个部分。以示例行为例:
one fish two fish red fish blue fish
----(每个字符标签/t
分开)
假设我要打印one
,然后我想打印red fish blue
我该怎么做?
或者,假设我要打印one
,然后计算red
之后的字符数(字数)?或者在two and blue
之间?
上一个问题产生了这个回复,用于打印该行的某个部分之后的所有内容:
c = ~/.*red(.*)/
m = line =~ c
if (m) {
println m[0][1]
}
产生fish blue fish
,但我对正则表达式的评价不够恰当。我已经尝试了几次迭代,在那里插入/t
并修改我的捕获表达式,但我还没弄明白。这是一个三个或四个问题,任何帮助表示赞赏。谢谢!!
答案 0 :(得分:0)
def a = [:].withDefault{[]}
def b = [:].withDefault{[]}
def c = 0
def d = 0
def e = 0
def f = 0
seuss = "one\tfish\ttwo\tfish\tred\tfish\tblue\tfish"
a = seuss.split (/\t/)
for (i =0; i<a.size(); i++) {
if (d != 0) {
c = c + 1
}
if ( a[i] == "red") {
d = i
}
}
println a[4] + '\t' + c
for (i =0; i<a.size(); i++) {
if ( a[i] == "blue") {
e = 0
}
if (e != 0) {
f = f + 1
}
if ( a[i] == "two") {
e = i
}
}
println a[0] + '\t' + f