在这段代码中,寻找一个正则表达式来提取出路径中除扩展名以外的文件名部分。
String filename = fullpath.replaceFirst(regex, "$1")
例如,以下是最简单的情况和我所做的内容:
- /path/filename.ext -> filename (fullpath.replaceFirst(".*/(.*)\\..*", "$1"))
这里有一些更高级的情况,我需要帮助解决:
- /filename.ext -> filename(可以以/开头) - filename. -> filename(可以以.结尾) - /filename -> filename(可能没有.) - filename.ext -> filename(可能没有/) - filename -> filename(可能没有.和/) - .filename -> .filename(可以以.开始) - /path/.filename -> .filename(可以紧接着/以.开始) - filename.part1.ext -> filename.part1(可以有中间的.) - /path_a/path.b/ ->(空字符串)(文件名可能不存在) - /path_a/path.b/filename -> filename(/之前的路径中可能有.)
编辑: 此处实际上没有任何文件,而
fullpath
不会导致任何文件。它来自URL请求。
new File(fullpath).getName()
- XtremeBaumer/path_a/path.b/
是一个指向文件夹而非文件的有效路径。然而它仍然有一个名称。 - XtremeBaumernew File(fullpath).getName()
是Java中获取文件名的一种常见方式。它将给定的完整路径作为参数,并返回该路径所表示的文件或目录的名称。 - XtremeBaumernew File("/path/filename.ext").getName()
会返回"filename.ext"而不是我在问题中需要的"filename"。 - user1589188