Groovy 删除文件扩展名的方法?

Groovy way to remove file extension?

我想知道是否有 "Groovy" 方法可以从文件名中删除文件扩展名。

当前解决方案依赖于 apache commons io 包:

import org.apache.commons.io.FilenameUtils

String filename = '/tmp/hello-world.txt'
def fileWithoutExt = FilenameUtils.removeExtension(filename)

你可以这样做:

filename[0..<filename.lastIndexOf('.')]

删除字符串中最后一个 . 之后的所有内容。

或者稍微漂亮一点的:

filename.take(filename.lastIndexOf('.'))

注意: 如果文件没有扩展名,它将不匹配

在这种情况下可能有点矫枉过正,但我​​倾向于将很多公共 classes 视为 mixin

String.metaClass.mixin org.apache.commons.io.StringUtils
String.metaClass.mixin org.apache.commons.io.FilenameUtils
etc

这样您就可以

String filename = '/tmp/hello-world.txt'
def fileWithoutExt = filename.removeExtension()

我混入哪些取决于脚本的要求,但我倾向于大量使用这种模式。它使我能够轻松使用我习惯使用的方法,而无需所有静态 class 或导入引用。