【发布时间】:2009-03-11 10:56:18
【问题描述】:
我需要能够转换:
(url) http://www.joe90.com/showroom
到
(namespace) com.joe90.showroom
我可以使用令牌等和强制规则集来做到这一点。
但是,有没有一种方法(java 包)可以为我做到这一点? 还是我自己写一个?
谢谢
【问题讨论】:
标签: java url namespaces
我需要能够转换:
(url) http://www.joe90.com/showroom
到
(namespace) com.joe90.showroom
我可以使用令牌等和强制规则集来做到这一点。
但是,有没有一种方法(java 包)可以为我做到这一点? 还是我自己写一个?
谢谢
【问题讨论】:
标签: java url namespaces
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 验证和解析。
【讨论】:
最好的办法是根据. 和/ 字符拆分字符串(例如,使用Sting.split(),然后以相反的顺序连接各个部分,跳过任何您不想包含的部分(例如www)
【讨论】: