URL и пространства имен преобразования Java - PullRequest
1 голос
/ 11 марта 2009

Мне нужно иметь возможность конвертировать:

(url) http://www.joe90.com/showroom 

до

(namespace) com.joe90.showroom

Я могу сделать это, используя токены и т. Д. И набор принудительных правил.

Однако, есть ли способ (пакет Java), который сделает это для меня? или мне нужно написать самому?

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 марта 2009
java.net.URL url = new java.net.URL("http://www.joe90.com/showroom");
String tokens[] = url.getHostname().split(".");
StringBuilder sb = new StringBuilder();
for (int i=0; i<tokens.length; i++) {
  if (i > 1) {
    sb.append('.');
  }
  sb.append(tokens[i]);
}
String namespace = sb.toString();

Или вы можете разобрать имя хоста.

Pattern p = Pattern.compile("^(\\w+://)?(.*?)/");
Matcher m = p.matcher(url); // string
if (m.matches()) {
  String tokens[] = m.group(2).split(".");
  // etc
}

Конечно, это регулярное выражение не соответствует всем URL, например:

http://username@hostname.com/...

Вот почему я предложил использовать java.net.URL: он выполняет всю проверку и анализ URL для вас.

1 голос
/ 11 марта 2009

Лучше всего было бы разбить строку на основе символов . и / (например, используя Sting.split(), а затем объединить фрагменты в обратном порядке, пропуская все, что вы не хотите включать ( например, www)

...