web-dev-qa-db-ja.com

ファイル拡張子を削除するGroovyの方法?

ファイル名からファイル拡張子を削除する「Groovy」の方法があるかどうか疑問に思います。

現在のソリューションは、Apache commonsioパッケージに依存しています。

import org.Apache.commons.io.FilenameUtils

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

あなたはこのようなことをすることができます:

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

文字列の最後の.以降のすべてを削除します。

または少しきれい:

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

NB:ファイルに拡張子がない場合、一致しません

28
tim_yates

この場合はやり過ぎかもしれませんが、私は多くのコモンズクラスをミックスインとして扱う傾向があります

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()

どちらをミックスインするかはスクリプトの要件によって異なりますが、私はこのパターンを頻繁に使用する傾向があります。これにより、静的クラスやインポート参照がなくても、使い慣れたメソッドを簡単に使用できます。

2