编写函数parseUrl,将url解析成各个域打印出来
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类的方法实现,不得采用正则表达式
1 package test.string; 2 /* 3 protocol://[user[:password]@](domain_name|ip)[:port][/[path]] 4 ftp://test:000@192.168.0.229:1023/test/data/data.xml 5 http://localhost:8080/giantstone/index.jsp 6 ftp://192.168.0.1 7 http://www.cqnu.edu.cn/index.asp 8 */ 9 public class ParseUrl { 10 public static void parseUrl(String url){ 11 int iRecord = 0; 12 int i = 0; 13 int iLast = 0; 14 for(i=0;i<url.length();i++){ 15 if(':' == url.charAt(i)){ 16 if(0 == iRecord){ 17 System.out.println("protocol["+url.substring(0,i)+"]"); 18 iRecord++; 19 iLast = i; 20 } 21 else if(1 == iRecord){ 22 System.out.println("usr["+url.substring(iLast+3,i)+"]"); 23 iLast = i; 24 iRecord++; 25 } 26 else if(2 == iRecord){ 27 System.out.println("domain_name["+url.substring(iLast+1,i)+"]"); 28 iLast = i; 29 iRecord++; 30 } 31 } 32 else if('/' == url.charAt(i)){ 33 if(('/' != url.charAt(i-1)) && ('/' != url.charAt(i+1))){ 34 if(iRecord > 1){//如果存在usr或者port 35 System.out.println("port["+url.substring(iLast+1,i)+"]"); 36 } 37 else{ 38 System.out.println("port[]"); 39 } 40 System.out.println("path["+url.substring(i)+"]"); 41 break; 42 } 43 } 44 else if('@' == url.charAt(i)){ 45 System.out.println("password["+url.substring(iLast+1,i)+"]"); 46 iLast = i; 47 } 48 } 49 } 50 51 public static void main(String[] args){ 52 String url1 = "ftp://test:000@192.168.0.229:1023/test/data/data.xml"; 53 //String url2 = "http://localhost:8080/giantstone/index.jsp"; 54 //String url3 = "ftp://192.168.0.1"; 55 //String url4 = "http://www.cqnu.edu.cn/index.asp"; 56 parseUrl(url1); 57 //parseUrl(url2); 58 //parseUrl(url3); 59 //parseUrl(url4); 60 } 61 }