ReplaceAll特殊字符处理replaceall()
⽤到Json与replaceAll
Http拦截脚本中经常需要替换,replace虽然不需要处理特殊字符,但是不能匹配多个,ReplaceAll能够使⽤正则,不过需要处理的转移实在太多
⽐如,需要替换⼀次\,需要输⼊四次\,⽽其他脚本进⾏注册表写⼊时,⼜需要转移那么需要输⼊8次\,对于这种情况,⼜不能简单的把所有斜杠翻倍。
简单点处理⽅式,
replace("\\4","\\\\");
采⽤⾃定义关键字,替换4次斜杠
下⾯是replaceAll处理特殊字符所需要斜杠个数
package json;
public class ReplaceAllTest {
public static void main(String[] args) {
//正则表达式中特殊字符需要//转义  ^词⾸ $词尾*多个字符串>0 +多个字符串>1 ()左右括号
puts("a~!@#$%^&*()_+b".replaceAll("~!@#\\$%\\^&\\*\\(\\)_\\+", "11~!@#\\$%^&*()_+11"));  //$在后⾯的字符串中需要转义
puts("a`-=b".replaceAll("`-=", "22`-=22"));
puts("----keyboard2----");
puts("a[b","a[b".replaceAll("\\[", "33[44"));  //左⽅括号需要转义
puts("a{b","a{b".replaceAll("\\{", "33{44"));  //左⼤括号需要转义
puts("a]}b","a]}b".replaceAll("]}", "33]}44"));
puts("a\\b","a\\b".replaceAll("\\\\", "11\\\\22"));  //斜杠,需要两次转义才是输出结果
puts("a3|4b","a3|4b".replaceAll("3\\|4", "11|22"));    //竖杆,正则表⽰或,需要转义
puts("----keyboard3----");
puts("a;:'\"b","a;:'\"b".replaceAll(";:'\"", "11;:'\"22")); //引号,只需要⼀个转义/,两个报错,三个与⼀个同样效果
puts("a;:'\"b","a;:'\"b".replaceAll(";:'\\\"", "11;:'\\\"22"));
puts("a\\\"b","a\\\"b".replaceAll("\\\\\"", "111"));
puts("a\\\"b","a\\\"b".replaceAll("\\\\\\\"", "111"));
puts("----keyboard4----");
puts("a,.<>b/","a,.<>b/".replaceAll(",\\.<>/", "11,.<>/22"));
puts("a?b","a?b".replaceAll("\\?", "11?22"));        //问号,正则中表⽰0~1个前⾯字符串
puts("特殊字符中,正则表达式⽤到的字符都需要\\进⾏转义");
puts("需要关注\"、\\前⾯的斜杠可以看作本⾝的⼀部分 ");
puts("需要关注$, 替换后的$同样需要进⾏转义");
puts("-----正则---转义字符--------");
puts("a33b".replaceAll("\\d+", "11\\\\d+22")); //正常转义字符使⽤--替换数字
puts("a-3a3-b".replaceAll("-(\\w+)-", "11\\\\w+22")); //正常转义字符使⽤--替换字母或数字
puts("a\\db".replaceAll("\\\\d", "11\\\\d22")); //替换字符串中的\d 为11\d22---与替换\⼀样
puts("a\\wb".replaceAll("\\\\w", "11\\\\w22")); //替换字符串中的\w 为11\w22---与替换\⼀样
puts("a\\$b".replaceAll("\\\\\\$", "11\\\\\\$22")); //替换字符串中的\$ 为11\$22---与替换\+$⼀样\\\\+\\$
puts("-------------综上单个字符斜杠使⽤-----"
+ "\r\n只需要⼀次斜杠的有\" "
+ "\r\n需要两次斜杠的有:表⽰⾃⾝$ ^ ( ) { [ | ? * . + "
+ "\r\n需要两次斜杠的有:表⽰正则d D w W s S t r "
+ "\r\n需要三次斜杠的有:表⽰⾃⾝\" 与⼀次效果相同 "
+ "\r\n需要四次斜杠的有:表⽰⾃⾝\\ "
+ "\r\n---------两个字符斜杠使⽤---------------"
+ "\r\n例如替换\\d,需要四次斜杠"
+ "\r\n例如替换\\\",需要五次斜杠"
+ "\r\n例如替换\\{ \\$ \\*,需要六次斜杠"
+ "\r\n例如替换\\\",使⽤七次斜杠与五次⼀样"
);
// puts("----中⽂字符-当作普通字符使⽤-----");
// puts("c~!@#¥%……&*()——+-=n".replaceAll("~!@#¥%……&*()——+-=","11~!@#¥%……&*()——+-=00"));
// puts("a[]{}、|b".replaceAll("[]{}、|", "11[]{}、|00"));
// puts("a;:‘’“”b".replaceAll(";:‘’“”", "11;:‘’“”00"));
// puts("a,。《》/?b".replaceAll(",。《》/?", "11,。《》/?00"));
}
public static void puts(String s){ System.out.println(s);
}
public static void puts(String s,String s2){ System.out.println(s+"\t"+s2);
}
}
输出结果为
a11~!@#$%^&*()_+11b
a22`-=22b
----keyboard2----
a[b a33[44b
a{b a33{44b
a]}b a33]}44b
a\b a11\22b
a3|4b a11|22b
----keyboard3----
a;:'"b a11;:'"22b
a;:'"b a11;:'"22b
a\"b a111b
a\"b a111b
----keyboard4----
a,.<>b/ a,.<>b/
a?b a11?22b
特殊字符中,正则表达式⽤到的字符都需要\进⾏转义需要关注"、\前⾯的斜杠可以看作本⾝的⼀部分
需要关注$, 替换后的$同样需要进⾏转义
-----正则---转义字符--------
a11\d+22b
a11\w+22b
a11\d22b
a11\w22b
a11\$22b
-------------综上单个字符斜杠使⽤-----
只需要⼀次斜杠的有"
需要两次斜杠的有:表⽰⾃⾝$ ^ ( ) { [ | ? * . +
需要两次斜杠的有:表⽰正则d D w W s S t r
需要三次斜杠的有:表⽰⾃⾝" 与⼀次效果相同
需要四次斜杠的有:表⽰⾃⾝\
---------两个字符斜杠使⽤---------------
例如替换\d,需要四次斜杠
例如替换\",需要五次斜杠
例如替换\{ \$ \*,需要六次斜杠
例如替换\",使⽤七次斜杠与五次⼀样

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。