2013-05-25 4 views
0

나는 https://xyz.com/abc/.../xyz/name_part이라는 URL을 가지고 있습니다. 이 부분을 https://xyz.com/abc/.../xyz 인 네임 스페이스 URI와 URL의 name_part 인 이름 부분으로 분리하여 두 부분으로 효율적으로 나누고 싶습니다. Java에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 네임 스페이스 URI는 고정되어 있지 않으며 동적 일 수 있습니다. 건배URL의 마지막 부분을 동적으로 추출합니다.

답변

2

을 사용합니다. 가장 이해할 것을 위해 이동 어쩌면

String url = "https://xyz.com/abc/.../xyz/name_part"; 
int separator = url.lastIndexOf('/'); 
String namespacePart = url.substring(0, separator); 
String namePart = url.substring(separator + 1); 

또는 :

String url = "https://xyz.com/abc/.../xyz/name_part"; 
String[] pathSegments = URI.create(url).getPath().split("/"); 
String namePart = pathSegments[pathSegments.length - 1]; 
String namespacePart = url.replaceAll("/" + namePart + "$", ""); 

을 당신에게 가장 자연스러운 것 같다 무엇에 따라 달라집니다.

5

, JDK의 URL 클래스는 사용자의 요구를 수용 할 수 있습니다.

URL url = new URL("https://test:[email protected]:7001/context/document?key1=val1&key2=val2"); 

확인 URL 클래스의 모든 getters. 그들 중 일부는 다음과 같습니다 :이 상황에서

url.getProtocol(); 
url.getUserInfo(); 
url.getHost(); 
url.getPort(); 
url.getPath(); 
url.getQuery(); 
+0

URL이나 URI 모두 마지막 경로 세그먼트를 추출하는 방법이 없습니다. 이 답변은 질문에 대답하지 않을 때 왜 그렇게 인기가 있습니까? –

1

는 단순히 정규식

String url = "https://xyz.com/abc/.../xyz/name_part"; 
    String[] a = url.split("/(?!.*/.*)"); 
    System.out.println(Arrays.toString(a)); 

출력 그것은 효율성이 어떤 문제가 될 것이 매우 확률이 낮다

[https://xyz.com/abc/.../xyz, name_part] 
관련 문제