java string 字符串替换

Wesley13
• 阅读 760

i、replace方法

    该方法的作用是替换字符串中所有指定的字符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。例如:

     String s = “abcat”;
     String s1 = s.replace(‘a’,‘1’);

    该代码的作用是将字符串s中所有的字符a替换成字符1,生成的新字符串s1的值是“1bc1t”,而字符串s的内容不发生改变。

    如果需要将字符串中某个指定的字符串替换为其它字符串,则可以使用replaceAll方法,例如:

    String s = “abatbac”;
    String s1 = s.replaceAll(“ba”,“12”);

    该代码的作用是将字符串s中所有的字符串“ab”替换为“12”,生成新的字符串“a12t12c”,而字符串s的内容也不发生改变。

    如果只需要替换第一个出现的指定字符串时,可以使用replaceFirst方法,例如:

    String s = “abatbac”;
    String s1 = s. replaceFirst (“ba”,“12”);

    该代码的作用是只将字符串s中第一次出现的字符串“ab”替换为字符串“12”,则字符串s1的值是“a12tbac”,字符串s的内容也不发生改变。

replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:

1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);
2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;

相同点是都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串,如果只想替换第一次出现的,可以使用 replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串;
另外,如果replaceAll()和replaceFirst()所用的参数据不是基于规则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作;
还有一点注意:执行了替换操作后,源字符串的内容是没有发生改变的.

举例如下:

        String src = new String("ab43a2c43d"); 

        System.out.println(src.replace("3","f"));=>ab4f2c4fd. 
        System.out.println(src.replace('3','f'));=>ab4f2c4fd. 
        System.out.println(src.replaceAll("\\d","f"));=>abffafcffd. 
        System.out.println(src.replaceAll("a","f"));=>fb43fc23d. 
        System.out.println(src.replaceFirst("\\d,"f"));=>abf32c43d 
        System.out.println(src.replaceFirst("4","h"));=>abh32c43d.

如何将字符串中的"\"替换成"\\":

        String msgIn; 
        String msgOut; 
        msgOut=msgIn.replaceAll("\\\\","\\\\\\\\");

原因:
'\'在java中是一个转义字符,所以需要用两个代表一个。例如System.out.println( "\\" ) ;只打印出一个"\"。但是'\'也是正则表达式中的转义字符(replaceAll 的参数就是正则表达式),需要用两个代表一个。所以:\\\\被java转换成\\,\\又被正则表达式转换成\。
同样
CODE: \\\\\\\\
Java: \\\\
Regex: \\
将字符串中的'/'替换成'\'的几种方式:

         msgOut= msgIn.replaceAll("/", "\\\\"); 
         msgOut= msgIn.replace("/", "\\"); 
         msgOut= msgIn.replace('/', '\\');
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
2年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Wesley13 Wesley13
2年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
Bill78 Bill78
3年前
Python 字符串常用方法总结
明确:对字符串的操作方法都不会改变原来字符串的值1,去掉空格和特殊符号name.strip()去掉空格和换行符name.strip('xx')去掉某个字符串name.lstrip()去掉左边的空格和换行符name.rstrip()去掉右边的空格和换行符2,字符串的搜索和替换name.count('x')查找某个
分布式id如何生成
1.UUID生成通过网卡、时间、随机数来保证生成的唯一的字符串。优点:(1)本地生成,生成简单(2)速度快(3)高可用;缺点:(1)无序,如果存入mysq,影响B的操作性能,因为B树是需要排序的;(2)占用空间较大(36个
Easter79 Easter79
2年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Stella981 Stella981
2年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Wesley13 Wesley13
2年前
Java学习:字符串概述与特点
字符串概述与特点java.lang.String类代表字符串API当中说:Java程序中的所有字符串字面值(如“abc“)都作为此类的实例实现。其实就是说:程序当中所用的双引号字符串,都是String类的对象。(就算没有new,也照样是。)字符串的特点1.字符串的内容永远不可改变。【重点】
Stella981 Stella981
2年前
JavaScript常用函数
1\.字符串长度截取functioncutstr(str,len){vartemp,icount0,patrn/^\x00\xff/,strre"";for(vari
Stella981 Stella981
2年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x