Java关键字有string_JAVA根据关键字获取字符串中的参数

b28aebc07badd487276df06d91cac779.png

现有一接口语句,用于数据集接口维护,其中sql查询入参是使用的'${}'来标识的。在实际使用过程中,需要将sql中的参数全部提取出来,那应该如何处理呢?经过资料查询,发现并没有现成的API可以直接使用,所以,这个轮子得自己来造。效率问题暂时不考虑,先实现功能,再做优化。

实现思路:

1、参数值可能有多个,又是在字符串中,可以利用下标截取字符串的方式。

2、找到字符串中相同的关键字,如 '${ 和 }' ,利用两个下标值就能截取到实际的参数值

3、查询全部'${的下标生成集合,查询全部}'的下标生成集合

4、根据两个下标集合的一一匹配关系,截取字符串中的全部参数

代码实现:

1、查询一个字符串再另一个字符串中出现的下标

/** * 查询一个字符串再另一个字符串中出现的下标 * @param str * @param key * @return */public static List searchAllIndex(String str, String key) { List allIndex=new ArrayList(); int a = str.indexOf(key);//*第一个出现的索引位置 while (a != -1) { allIndex.add(a); a = str.indexOf(key, a + 1);//*从这个索引往后开始第一个出现的位置 } return allIndex;}2、根据关键字 获取字符串中参数

/** * 根据关键字 获取字符串中参数 * @param string * @param keyStart 如'${ * @param keyEnd 如 }' * @return */public static List getKeyListFromString(String string,String keyStart,String keyEnd){ // 返回数据 List allStringList=new ArrayList(); // 判断不为空 if(StringUtils.isNotBlank(string)){ // 去空格 string = string.replaceAll("\\\\s*",""); // 开始keyIndex集合 List firstIndex=searchAllIndex(string,keyStart); // 结束keyIndex集合 List endIndex=searchAllIndex(string,keyEnd); // 不为空 if(CollectionUtils.isNotEmpty(firstIndex)){ // 循环 for(int i=0;i

010a6cea6e5f90237caa545263e82de3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值