String的replace和replaceAll

replace(CharSequence target, CharSequence replacement)

这里CharSequence是一个接口 实现类包括CharBuffer, Segement , String,  StringBuffer,  StringBuilder

replaceAll(String regex, String replacement) 

背景介绍好了看一个例子

"**牛奶" 想把这个字符串的*替换为1

两种实现方式

"**牛奶".replace("*","1")

"**牛奶".replaceAll("\\u002A","1")   //注意这里的斜杠 而不是经常用的反斜杠

是不是看起来第二个有些奇怪,后来发现方法前面里面的regex,这里代表的是正则表达式,而*在正则表达式中是有特殊含义的表示前面的字符出现0+次,所以这里需要对有特殊含义的*进行转义。这个方法有一个优点就是可以通过正则表达式简化很多操作,比如将数字都替换为a。

之前一直对转义字符不甚了解,这回有了一些认识。

当某个字符在特定语境,有特殊含义的时候或者说除了代表字符本身还有其他的作用时,如果想要表达其本身就要对其进行转义。

上面正则表达是一个例子,值得一提的是string的split方法中也是正则表达,这里也要对『特殊』字符进行转义。

除了String类型的正则表达,还有就是作为单一字符的时候

char c = '\'这时候会报错,因为\还有别的含义 用来输出一些特殊字符 比如\n 所以这里要转义 写成 '\\'

posted @ 2017-09-05 18:19  丨核桃牛奶  阅读(683)  评论(0编辑  收藏  举报