java中replaceAll替换圆括号实例代码
前言
在手写sql的时候,根据参数处理查询条件.
select * from staff where 1 = 1 and staff_id in ($staffIds) and staff_name in ($staffNames)
比如staffId为空,需要把staff_id in ($staffIds) 候设置为true,staffName正常赋值
replace替换圆括号
public static void main(String[] args) { String sqlStr = "select * from staff where 1 = 1 and staff_id in ($staffIds) " + "and staff_name in ($staffNames)"; String replaceEmpty = "staff_id in ($staffIds)"; String replaceSql = sqlStr.replace(replaceEmpty, "true"); System.out.println(replaceSql); }
结果:
select * from staff where 1 = 1 and true and staff_name in ($staffNames)
直接用replace就可以了。
replaceAll替换圆括号
如果是想用replaceAll呢?
public static void main(String[] args) { String sqlStr = "select * from staff where 1 = 1 and staff_id in ($staffIds) " + "and staff_name in ($staffNames)"; String replaceEmpty = "staff_id in ($staffIds)"; String replaceAllSql = sqlStr.replaceAll(Matcher.quoteReplacement(replaceEmpty), "true"); System.out.println(replaceAllSql); }
结果:
select * from staff where 1 = 1 and staff_id in ($staffIds) and staff_name in ($staffNames)
没有替换成功,为什么呢?
看replaceAll的方法:
public String replaceAll(String regex, String replacement) { return Pattern.compile(regex).matcher(this).replaceAll(replacement); }
regex 对应的是正则的内容,因此要对圆括号进行转移下:
String replaceAllSql = replaceEmpty = replaceEmpty.replaceAll("\\(", "[( )]").replaceAll("\\)", "[( )]");
替换前,对圆括号进行转义
public static void main(String[] args) { String sqlStr = "select * from staff where 1 = 1 and staff_id in ($staffIds) " + "and staff_name in ($staffNames)"; String replaceEmpty = "staff_id in ($staffIds)"; replaceEmpty = replaceEmpty.replaceAll("\\(", "[( )]").replaceAll("\\)", "[( )]"); String replaceAllSql = sqlStr.replaceAll(Matcher.quoteReplacement(replaceEmpty), "true"); System.out.println(replaceAllSql); }
结果:
select * from staff where 1 = 1 and true and staff_name in ($staffNames)
替换成功。
补充:Java 利用replaceAll 替换中括号
Java的replaceAll函数默认是不能替换中括号的,例如想替换[b]到<b>,结果却就变成[<b>]
解决方案就是首先利用正则表达式替换中括号,然后再替换中括号内的内容:
infos = infos.replaceAll("[\\[\\]]","");
不过后来又查询了下资料,发现中括号在java中居然是特殊字符,一对中括号里的内容是一组正则表达式。所以如果打算让[b]-><b>,只要如下写法:
infos = infos.replaceAll("\\[b\\]","<b>");
总结:
字符替换的时候,优先考虑使用replace,多个时候,也是生效的。如果要使用replace的话,使用要注意特殊字符的处理。或者自己写正则进行处理。
优化: 《整体替换sql》
到此这篇关于java中replaceAll替换圆括号的文章就介绍到这了,更多相关java replaceAll替换圆括号内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
- javascript中使用replaceAll()函数实现字符替换的方法
- Javascript中正则表达式的全局匹配模式分析
- Javascript中使用exec进行正则表达式全局匹配时的注意事项
- JavaScript实现的字符串replaceAll函数代码分享
- javascript实现全局匹配并替换的方法
- Java中replace与replaceAll的区别与测试
- java字符串的替换replace、replaceAll、replaceFirst的区别说明
- Java replaceAll()方法报错Illegal group reference的解决办法
- String.replaceAll方法详析(正则妙用)
- 浅谈Java中replace与replaceAll区别
- Java中replace、replaceAll和replaceFirst函数的用法小结
- 浅谈java中replace()和replaceAll()的区别
- jQuery中replaceAll()方法用法实例
- js使用正则实现ReplaceAll全部替换的方法
- js字符串替换所有的指定字符或文字(推荐replaceAll方法)
- JS中实现replaceAll的方法(实例代码)
- js replace 与replaceall实例用法详解
- Flex 字符串ReplaceAll使用说明
- JavaScript中使用replace结合正则实现replaceAll的效果
相关文章
SpringBoot程序打包失败(.jar中没有主清单属性)
在学习SpringBoot,打包SpringBoot程序后,在cmd运行出现了 某某某.jar中没有注清单属性,本文就来介绍一下原因以及解决方法,感兴趣的可以了解一下2023-06-06Spring Cloud Gateway动态路由Apollo实现详解
这篇文章主要为大家介绍了Spring Cloud Gateway动态路由通过Apollo实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-10-10SpringMVC+Spring+Mybatis实现支付宝支付功能的示例代码
这篇文章主要介绍了SpringMVC+Spring+Mybatis实现支付宝支付功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-05-05jackson在springboot中的使用方式-自定义参数转换器
这篇文章主要介绍了jackson在springboot中的使用方式-自定义参数转换器,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-10-10
最新评论