Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Java中replaceAll()方法的“”问题

一、前话看似小小的一个问题,却往往足矣让我们困惑了半小时、一小时甚至更久的时间。当你得知真相后,总是会愤怒地骂道:“居然是这样!这不是坑爹么!”。嗯哼,这能怪谁?只能说明自己还太嫩!So……平时还是要多注意些细节,要不断的积累不断的丰富经验,日后才能有显摆的资本。--------------------------------------分割线 --------------------------------------编写高质量代码 改善Java程序的151个建议 PDF高清完整版 http://www.linuxidc.com/Linux/2014-06/103388.htmJava 8简明教程 http://www.linuxidc.com/Linux/2014-03/98754.htmJava对象初始化顺序的简单验证 http://www.linuxidc.com/Linux/2014-02/96220.htmJava对象值传递和对象传递的总结 http://www.linuxidc.com/Linux/2012-12/76692.htmJava对象序列化ObjectOutputStream和ObjectInputStream示例 http://www.linuxidc.com/Linux/2012-08/68360.htm--------------------------------------分割线 --------------------------------------二、天真的以为replaceAll()这方法太常见了,一般的字符替换都好理解。但是如果你所要替换的出现了""的话,那可就不大一样了。例如:str = "D: est est2 est3";要把s1字符串中的""替换成"\";嗯,很多人可能误以为是这么写: str.replaceAll("\","\\");可实际上正确的应该是这样子写: str.replaceAll("\\","\\\\");三、真相是这样OMG~怎么要这么多条杠?不要惊讶,原因其实很简单。1、因为""在java中是转义符,在正则表达式中也是转义符号2、String.replaceAll(regex, replacement)实际用的是正则表达式的规则去匹配的3、先java转义,"\\"--解释成-->"\";再方法中的正则转义,"\"---解释成-->""总结下:在java中要用正则来表示一个"",则需4个""即("\\")。表示"\",则需要8个""即("\\\\")……以此类推。四、碎碎念结语:细心,这东西真的很重要。本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-07/104513.htm