码迷,mamicode.com
首页 > 编程语言 > 详细

Java中replaceAll()方法的"\"问题

时间:2014-07-21 22:35:07      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:正则表达式   转义字符   java转义字符   replaceall   '\'转义   

一、前话

    看似小小的一个问题,却往往足矣让我们困惑了半小时、一小时甚至更久的时间。当你得知真相后,总是会愤怒地骂道:“居然是这样!这不是坑爹么!”。嗯哼,这能怪谁?只能说明自己还太嫩!So……平时还是要多注意些细节,要不断的积累不断的丰富经验,日后才能有显摆的资本bubuko.com,布布扣


二、天真的以为

    replaceAll()这方法太常见了,一般的字符替换都好理解。但是如果你所要替换的出现了"\"的话,那可就不大一样了。例如:

str = "D:\test\test2\test3";

要把s1字符串中的"\"替换成"\\";

    嗯,很多人可能误以为是这么写: str.replaceAll("\\","\\\\");

    可实际上正确的应该是这样子写: str.replaceAll("\\\\","\\\\\\\\");

    

三、真相是这样

    OMG~怎么要这么多条杠?不要惊讶,原因其实很简单。

    1、因为"\"在java中是转义符,在正则表达式中也是转义符号

    2、String.replaceAll(regex, replacement)实际用的是正则表达式的规则去匹配的

    3、先java转义,"\\\\"--解释成-->"\\";再方法中的正则转义,"\\"---解释成-->"\"

    

    总结下:在java中要用正则来表示一个"\",则需4个"\"即("\\\\")。表示"\\",则需要8个"\"即("\\\\\\\\")……以此类推。


四、碎碎念

    结语:细心,这东西真的很重要。

本文出自 “刚出道” 博客,请务必保留此出处http://linhongyu.blog.51cto.com/6373370/1441073

Java中replaceAll()方法的"\"问题

标签:正则表达式   转义字符   java转义字符   replaceall   '\'转义   

原文地址:http://linhongyu.blog.51cto.com/6373370/1441073

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!