您的位置:首页 > 其它

编写函数parseUrl,将url解析成各个域打印出来

2013-01-26 12:04 453 查看
url一般格式为:
protocol://[user[:password]@](domain_name|ip)[:port][/[path]]
例如: ftp://test:000@192.168.0.229:1023/test/data/data.xml http://localhost:8080/giantstone/index.jsp
请编写函数parseUrl,将url解析成各个域打印出来:
public static void parseUrl(String url)
注:要求用String类的方法实现,不得采用正则表达式

package test.string;
/*
protocol://[user[:password]@](domain_name|ip)[:port][/[path]] ftp://test:000@192.168.0.229:1023/test/data/data.xml http://localhost:8080/giantstone/index.jsp ftp://192.168.0.1 http://www.cqnu.edu.cn/index.asp
*/
public class ParseUrl {
public static void parseUrl(String url){
int iRecord = 0;
int i = 0;
int iLast = 0;
for(i=0;i<url.length();i++){
if(':' == url.charAt(i)){
if(0 == iRecord){
System.out.println("protocol["+url.substring(0,i)+"]");
iRecord++;
iLast = i;
}
else if(1 == iRecord){
System.out.println("usr["+url.substring(iLast+3,i)+"]");
iLast = i;
iRecord++;
}
else if(2 == iRecord){
System.out.println("domain_name["+url.substring(iLast+1,i)+"]");
iLast = i;
iRecord++;
}
}
else if('/' == url.charAt(i)){
if(('/' != url.charAt(i-1)) && ('/' != url.charAt(i+1))){
if(iRecord > 1){//如果存在usr或者port
System.out.println("port["+url.substring(iLast+1,i)+"]");
}
else{
System.out.println("port[]");
}
System.out.println("path["+url.substring(i)+"]");
break;
}
}
else if('@' == url.charAt(i)){
System.out.println("password["+url.substring(iLast+1,i)+"]");
iLast = i;
}
}
}

public static void main(String[] args){
String url1 = "ftp://test:000@192.168.0.229:1023/test/data/data.xml";
//String url2 = "http://localhost:8080/giantstone/index.jsp";
//String url3 = "ftp://192.168.0.1";
//String url4 = "http://www.cqnu.edu.cn/index.asp";
parseUrl(url1);
//parseUrl(url2);
//parseUrl(url3);
//parseUrl(url4);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: