csp:URL (java)利用正则表达式完美解决

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		String sint="\\d{1,}";//整数正则表达式
		String sstr="[a-z[A-Z][0-9][.][-][_]]{1,}";//字符串正则表达式
		String spath="[a-z[A-Z][0-9][.][-][_][/]]{1,}";//路径正则表达式
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		String[][] str=new String[n][2];// URL映射规则,str[][0]规则str[][1]参数
		String[] strr=new String[n];//规则左边字符串按斜杆分割数组
		int m=in.nextInt();
		String[] strp=new String[m];
		for(int i=0;i<n;i++)
		{
			str[i][0]=new String(in.next());
			str[i][1]=new String(in.next());
			String[] arry=str[i][0].split("/");//规则左边字符串按斜杆分割数组
			strr[i]="/";//匹配正则字符串
			for(int j=1;j<arry.length;j++)
			{
				if(arry[j].equals("<int>"))
					strr[i]=strr[i].concat(sint);//正则表达式拼接
				else if(arry[j].equals("<str>"))
					strr[i]=strr[i].concat(sstr);
				else if(arry[j].equals("<path>"))
					strr[i]=strr[i].concat(spath);
				else
					strr[i]=strr[i].concat(arry[j]);
				if(j!=arry.length-1)
				strr[i]=strr[i]+"/";
				else if(str[i][0].toCharArray()[str[i][0].length()-1]=='/')
				strr[i]=strr[i]+"/";
				
			}
			//System.out.println(strr[i]);
		}
		for(int i=0;i<m;i++)
		{
			strp[i]=in.next();
			int flag=0;
			for(int j=0;j<n;j++)
			{
				if(strp[i].matches(strr[j])==true)//匹配成功
				{
					flag=1;
					System.out.print(str[j][1]);
					String[] arry1=str[j][0].split("/");
					String[] arry2=strp[i].split("/");
					for(int k=1;k<arry1.length;k++) {
						if(arry1[k].equals("<int>")) {
							System.out.print(" "+Integer.parseInt(arry2[k]));
						}
						else if(arry1[k].equals("<str>"))
							System.out.print(" "+arry2[k]);
						else if(arry1[k].equals("<path>"))
						{
							System.out.print(" ");
							int indexsite=strp[i].indexOf(arry2[k-1]+"/");
							System.out.print(strp[i].substring(indexsite+arry2[k-1].length()+1));
							break;
						}
						
					}
					if(flag==1)
					System.out.println();
					break;
				}
			}
			if(flag==0)
				System.out.println("404");
		}

	}

}

 

发布了36 篇原创文章 · 获赞 10 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览