Как напечатать часть строки ЧАСТЬ 2 - PullRequest
0 голосов
/ 29 ноября 2011

Используя 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 и изменив выражение захвата, но я не понял этого.Это три или четыре вопроса в одном, любая помощь приветствуется.Спасибо!!

1 Ответ

0 голосов
/ 16 декабря 2011
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
...