java int 正则表达式_java正则表达式

展开全部

虽然你要处理的是 public void  find(String name,int age);但636f707962616964757a686964616f31333337386563核心问题是,对括号内String name,int age参数的解析;我写了一个工具方法,备注的很清晰,仅供参考。//解析括号内的参数,如果使用java的pattern类,轻松搞定

public static void main(String[] args) {

System.out.println(executeAnalysis("public void  find(String name,int age)"));

System.out.println(executeAnalysis("public void  find(Object name,Integer age)"));

System.out.println(executeAnalysis("public void  find(boolean bool)"));

System.out.println(executeAnalysis("public void  find()"));

}

/**

* 此方法可以匹配任意类型和任意个参数,但未处理数组类型,泛型类型以及用中文等非字母命名的自定义类型

* @param des

*/

public static String executeAnalysis(String des) {

if(des==null || des.length()==0){

return null;

}

//检查字符串是否有参数

Matcher argMatcher = Pattern.compile("\\((.+)\\)").matcher(des);

//空参,返回原始字符串

if(!argMatcher.find()){

return des;

}

//提取括号内的参数

String content =argMatcher.group(1);

//参数间铁定以逗号分隔

String[] fragment = content.split(",");

//构造提取参数类型的正则表达式

Pattern typeRegulx= Pattern.compile("([a-zA-Z]\\w*)\\s+.+");

//准备好返回值的固定部分

StringBuffer buf = new StringBuffer("public void  find(");

//遍历依次提取每个参数的类型

Matcher typeMatcher;

for(String item:fragment){

//构造匹配

typeMatcher = typeRegulx.matcher(item);

//执行匹配,这里一定会匹配成功,否则执行本方法没有意义

typeMatcher.find();

//提取并追加到返回结果中

buf.append(typeMatcher.group(1)).append(",");

}

//去除多余的逗号并返回完整字符串

return buf.substring(0, buf.length()-1)+")";

}

运行结果:

public void  find(String,int)

public void  find(Object,Integer)

public void  find(boolean)

public void  find()

时间关系,没处理数组,泛型之类的,但是也很简单。楼主可以自由发挥,有问题可以联系我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值