Java替换字符串中所有指定字符

您所在的位置:网站首页 java字符串替换中文 Java替换字符串中所有指定字符

Java替换字符串中所有指定字符

2023-12-29 10:21| 来源: 网络整理| 查看: 265

使用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.png

  String的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