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 所以这里要转义 写成 '\\'
才能这种东西 本来就是靠自己挖掘创造的 我也不是什么天才 我只是比任何人都拼命工作 一步一个脚印走过来了 等我回头一看 背后没有一个身影 那帮懒惰的人在山脚念叨着 谁叫那家伙是天才 开什么玩笑 我最讨厌悠哉悠哉长大的慢性子 比我有时间 有精力 感情丰富的人 为什么比我懒惰 那就给我啊 要把这些东西都浪费掉的话 就通通给我 我还有很多很多想创造的东西 给我啊--------摘自《legal high II》 与诸君共勉