2010-05-25 66 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) 
    } 
    }