功能需求
给定一个格式已经确定的url(比如:http://www.abc.com?a=1&b=2&c=3) ,现在需要分别获取a/b/c各个参数的值,如何实现呢?
具体代码
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 〈一句话功能简述〉<br>
* 〈解析url参数工具,返回url中的数字〉
*
* @author Administrator
* @create 2019-03-30
* @since 1.0.0
*/
public class AnalyticUrlParame {
Pattern regEx = Pattern.compile("[^\\d]+([\\d]+)[^\\d]+.*");
String temp = "";
public String getNumFromUrl(String url_obj) {
url_obj = url_obj + "q";//将一个非数字的字符串赋值给接收到的的参数,防止入参最后一个是数字时,无法解析
Matcher m = regEx.matcher(url_obj.replace(" ", ""));
boolean result = m.find();
if (result) {
if ((m.group(1)) != null) {
System.out.println(m.group(1));
temp += m.group(1)+"/";
url_obj = url_obj.replaceAll(m.group(1),"" );
}
//递归调用(调用函数本身),使用递归时候,一定要注意写明结束递归的条件,否则将无限调用,陷入死循环
getNumFromUrl(url_obj);
} else {
return temp;
}
return temp;
}
}
如何调用
public static void main(String[] args) {
String url = "http://localhost:8080/default/room/room-list-auditting.do?filter_EQL_sale_state=-2&filter_LIKES_delete_flag=1&id=45&jka=30";
String temp = new AnalyticUrlParame().getNumFromUrl(url);//
System.out.println("返回的参数为:"+temp);
}