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 或导入引用。
我想知道是否有 "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 或导入引用。