Java替换字符串中所有指定字符 |
您所在的位置:网站首页 › java字符串替换中文 › Java替换字符串中所有指定字符 |
使用Java的replaceAll(String regex, String replacement)函数可替换字符串中所有指定字符。 regex是一个正则表达式,replacement是字符串。用replacement替换所有的regex匹配项。 String str = "{\\\"aaa\\\":\\\"bbb\\\",\\\"ccc\\\\":\\\"ddd\\\"}";1.对于串str,Java将其进行转义,\\ 表示 \ ,\" 表示 " 在Java内存中即为:{\"aaa\":\"bbb\",\"ccc\":\"ddd\"}, 然而,我们的目标是 {"aaa":"bbb","ccc":"ddd"},即将转义字符 \ 替换为空。 2.Java的replaceAll(String regex, String replacement)函数,第一个参数是一个正则表达式。 在正则表达式中的"\"与后面紧跟的那个字符构成一个转义字符,代表着特殊的意义,比如"\n"表示换行符等。 所以,如果要在正则表达式中表示一个反斜杠\,则应当用\\表达 。 但参数regex 首先会经过Java的一次转义,若想表达两个反斜杠 \\,则需四个反斜杠。 综上所述:replaceAll 的第一个参数是正则表达式,故而要经过两次转义,一次Java、一次正则。 因此就需要四个反斜杠才可以匹配一个反斜杠。故而,替换一个反斜杠为空的replaceAll的代码即为: String str1 = str.replaceAll("\\\\",""); //例 替换图片路径中的\ String picPath = "E:\\back\\img\\pic.png"; String result = picPath.replaceAll("\\\\","/"); // 得到地址 E:/back/img/pic.pngString的replaceAll 同Matcher.replaceAll如下是String的repalceAll的源码实现。 public String repalceAll(String expr,String substitute){ return Pattern.compile(expr).matcher(this).replaceAll(substitute); } //Pattern.compile(expr)的参数是正则表达式。 //错误写法(运行报错): String tmp = Pattern.compile("\\").matcher("h\\").replaceAll("ello"); //正确写法: String tmp = Pattern.compile("\\\\").matcher("h\\").replaceAll("ello"); //输出为hello转义字符含义ASCII码值(十进制)\a响铃(BEL)007\b退格(BS) ,将当前位置移到前一列008\f换页(FF),将当前位置移到下页开头012\n换行(LF) ,将当前位置移到下一行开头010\r回车(CR) ,将当前位置移到本行开头013\t水平制表(HT) (跳到下一个TAB位置)009\v垂直制表(VT)011\\代表一个反斜线字符''\'092\'代表一个单引号(撇号)字符039\"代表一个双引号字符034\0空字符(NULL)000\ddd1到3位八进制数所代表的任意字符三位八进制\xhh1到2位十六进制所代表的任意字符二位十六进制
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |