我正在尝试从URL中提取具有某些特定扩展名的文件名。例如,我有一个类似" https://abc.xyz.com/path/somefilename.xy"的网址。我需要提取" somefilename.xy"来自上面的网址,没有别的。
基本上我需要在我的java程序中编写该代码
我在正则表达式中表现不佳,所以有人可以帮助我。
答案 0 :(得分:6)
您也可以在没有正则表达式的情况下执行此操作:
String url = "https://abc.xyz.com/path/somefilename.xy";
String fileName = url.substring(url.lastIndexOf('/') + 1);
// fileName is now "somefilename.xy"
编辑(归功于 @SomethingSomething ):如果您还应支持包含参数的网址,例如https://abc.xyz.com/path/somefilename.xy?param1=blie¶m2=bla
,则可以使用此代码:
String url = "https://abc.xyz.com/path/somefilename.xy?param1=blie¶m2=bla";
java.net.Url urlObj = new java.net.Url(url);
String urlPath = urlObj.getPath();
String fileName = urlPath.substring(urlPath.lastIndexOf('/') + 1);
// fileName is now "somefilename.xy"
答案 1 :(得分:1)
这已经完成了一百次,取自this answer:
import org.apache.commons.io.FilenameUtils;
public class FilenameUtilTest {
public static void main(String[] args) {
String url = "http://www.example.com/some/path/to/a/file.xml";
String baseName = FilenameUtils.getBaseName(url);
String extension = FilenameUtils.getExtension(url);
System.out.println("Basename : " + baseName);
System.out.println("extension : " + extension);
}
}