私は現在、Scala プロジェクトに取り組んでおり、それを Java に変換しています。すべてうまくいっていますが、私はこのスニペットに出くわしました:
Pattern fileNamePattern = Pattern.compile("^(\\w+).*(_\\w+\\.xml)$");
new File(filePath).getName match {
case FileNamePattern(first, last) => return first + last
case n => return n
}
正規表現、1 つ以上の文字、数字、または句読点の後に 0 つ以上の文字が続き、その後に 1 つ以上の文字、数字、または句読点が続くことを理解しています。この関数の目的は、ファイル パスからファイル名を取得することですが、これは Java では非常に単純なので、Scala 開発者が必要以上に複雑にすることはないと思います。
問題は、開発者がもう少し賢いことをしようとしているのに、開発者がばかだと思い込んで前に進みたくないということです。Scala の経験が不足しているため、それを見ることができません。誰かが説明してください:
- match を使用した構文
- 地獄の最初と最後はどこから来たのか
- このスニペットに相当する Java に相当する / ドキュメント
def getFileName(filePath: String): String = {
if(filePath == null || filePath.trim.length == 0) {
return filePath
}
val FileNamePattern = new Regex("^(\\w+).*(_\\w+\\.xml)$")
new File(filePath).getName match {
case FileNamePattern(first, last) => return first + last
case n => return n
}
}