正则表达式的保留字符主要有:圆括号、方括号、花括号、竖线、横线、点号、加号、星号、反斜杆等等,下面这篇文章主要给大家介绍了关于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替换圆括号内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:java中replaceAll替换圆括号实例代码
基础教程推荐
- Java文件管理操作的知识点整理 2023-05-19
- springboot自定义starter方法及注解实例 2023-03-31
- Java并发编程进阶之线程控制篇 2023-03-07
- Java实现线程插队的示例代码 2022-09-03
- java实现多人聊天系统 2023-05-19
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- Java数据结构之对象比较详解 2023-03-07
- java基础知识之FileInputStream流的使用 2023-08-11
- Java实现查找文件和替换文件内容 2023-04-06