2014-10-22 2 views

답변

4

과 같이 :

String url = "https://abc.xyz.com/path/somefilename.xy"; 
String fileName = url.substring(url.lastIndexOf('/') + 1); 
// fileName is now "somefilename.xy" 

EDIT (신용을 @SomethingSomething) :과 같은 매개 변수가있는 URL도 지원해야하는 경우, 대신이를 사용할 수 있습니다? //abc.net/path/to/index.htm PARAM1 = 즐 & PARAM2 = bla` : URL이`httt과 같은 경우

String url = "https://abc.xyz.com/path/somefilename.xy?param1=blie&param2=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" 
+0

당신은 사건을 무시한다. 원하는 결과는 물론'index.htm'이고, 코드는'index.htm? param1 = bla & param2 = bla'를 반환 할 것입니다. – SomethingSomething

+0

@SomethingSomething 글쎄요, OP가 질문했습니다 : "somefilename.xy"를 추출해야합니다. 위의 URL에서, 그리고 그 밖의 것은 없습니다 ._ ". 또한 나는 3 년 전에 이것을 대답했다. 아마 _RyRope_의 답변과 같은 것을 사용할 것입니다. 왜 당신이 언급 한 이런 종류의 가장자리 케이스에 대해 생각하고 생각한 라이브러리와 유틸리티가있을 때 휠을 다시 발명해야합니다. –

+1

어쨌든 트릭은'URL urlObj = new URL (url);과'String urlPath = urlObj.getPath()'두 줄을 추가하는 것입니다. 그런 다음'urlPath'에'substring' 솔루션을 적용하면 더 강력합니다. – SomethingSomething

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); 
    } 

} 
관련 문제