2011-11-29 105 views
0

使用Groovy,我希望抓住由製表符分隔的兩行部分。就拿示例行:如何打印部分線段第2部分

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但我不comptetent不夠用正則表達式的適當修改此。我已經嘗試了一些迭代,在那裏插入/t並修改捕獲表達式,但我沒有弄明白。這是三個或四個問題之一,任何幫助表示讚賞。謝謝!!

+0

在選項卡上拆分,在結果數組中獲取第一個元素並計算所需的元素。 – Qtax

+0

謝謝。我是一個新手。我如何在選項卡上分割? – blaughli

+0

感謝Qtax,我找到了一個例子:'http:// jonstefansson.blogspot.com/2008/05/groovy-database-script.html' – blaughli

回答

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