2010-05-25 34 views
0

如何使用groovy從這些行中獲取文件名。
groovy正則表達式

File file = new File(SOURCE_FILE_NAME).eachLine{line-> 
    println line 
} 

越來越一行:

/usr/local/ 
/usr/local/testing.groovy 
/usr/local/picture.jpg 

預期輸出:

testing.groovy 
picture.jpg 

感謝

回答

1
File file = new File(SOURCE_FILE_NAME).eachLine{ path -> 
    println org.apache.commons.lang.StringUtils.substringAfterLast(path, "/") 
} 
+0

嗨,當使用你的路徑,得到錯誤java.lang.StringIndexOutOfBoundsException:字符串索引超出範圍:16. 我也有/ usr/local/.may與此顯示錯誤?謝謝 – srinath 2010-05-25 13:15:09

+0

謝謝,不知道如何跳過與文件擴展名一致? 行還包含/ usr/local,/usr/local/test.org.groovy .... – srinath 2010-05-25 13:21:24

+0

現在應該可以 – 2010-05-26 07:17:03

0
println (new File(yourString).name) 

這應該工作。

+0

嗨juriy, 這裏我我我在做File file =新文件(SOURCE_FILE_NAME).eachLine {line-> println line } 我得到/usr/local/testing.groovy。現在我只需要獲取不包含路徑的文件名。謝謝 – srinath 2010-05-25 13:03:48

1

我不知道常規,但你正在尋找的正則表達式將[^/]+$

0

也(無外部DEPS)

["/usr/local", "/usr/local/testing.groovy", 
    "/usr/local/picture.jpg"].each { item-> 
    def pat = item =~ /(\w*\/)*(.*)/ 
    if(pat.matches()) { 
     println pat.group(2) 
    } 
    }