2016-06-17 4 views
0

Java имеет прохладное URL парсерURL синтаксического анализа без строки разделить

import java.net.*; 
import java.io.*; 

public class ParseURL { 
public static void main(String[] args) throws Exception { 

    URL aURL = new URL("http://example.com:80/docs/books/tutorial" 
         + "/index.html?name=networking#DOWNLOADING"); 

    System.out.println("path = " + aURL.getPath()); 
} 
} 

Вот вывод, отображаемый в программе:

path = /docs/books/tutorial/index.html 

Я хотел бы взять только эту часть: docs/books/tutorial (или /docs/books/tutorial/) Угадай, что не используй строку split, я ищу другое лучшее разрешение для этой задачи.

Спасибо заранее

+0

Вы всегда можете написать собственный метод, чтобы получить подстроку пути. – Kartic

ответ

2

Есть несколько способов. Один из них использует URI#resolve("."), где . представляет текущий каталог. Так что ваш код может выглядеть следующим образом:

URI uri = new URI("http://example.com:80/docs/books/tutorial" 
     + "/index.html?name=networking#DOWNLOADING"); 
System.out.println(uri.resolve(".").getPath()); 

Выход: /docs/books/tutorial/


Другого способ может включать в себя файловую систему и классы, которые обрабатывают его, как File или его улучшенную версию, введенные в Java 7 Path (и его полезность класс Paths).
Эти классы должны позволить вам разобрать path

/docs/books/tutorial/index.html 

и получить его родительский расположение /docs/books/tutorial.

URL aURL = new URL("http://example.com:80/docs/books/tutorial" 
     + "/index.html?name=networking#DOWNLOADING"); 

String path = aURL.getPath(); 
String parent = Paths.get(path).getParent().toString(); 

System.out.println(parent);// \docs\books\tutorial 

(немного предупреждение: в зависимости от вашей операционной системы, вы можете получить путь разделяться \ вместо /)

2
String path = "/docs/books/tutorial/index.html"; 
path = path.substring(1, path.lastIndexOf("/")); 

дает docs/books/tutorial

2

Вы можете сделать это с помощью Object File, а не разделить ваши строки:

Рабочий пример:

import java.io.File; 
import java.net.URL; 

public class ParseURL { 
    public static void main(String[] args) throws Exception { 

     URL aURL = new URL("http://example.com:80/docs/books/tutorial" 
          + "/index.html?name=networking#DOWNLOADING"); 

     System.out.println("path = " + aURL.getPath()); 

     File file = new File(aURL.getPath()); 

     System.out.println("pathOnly = " + file.getParent()); 
    } 
} 

Выход:

path = /docs/books/tutorial/index.html 
pathOnly = /docs/books/tutorial 
1

Возьмите это в качестве примера:

public static String getCustomPath() { 
    String path = "/docs/books/tutorial/index.html"; 
    String customPath = path.substring(0, path.indexOf("index.html")); 
    return customPath; 
} 
Смежные вопросы