Java反斜杠如何转义的问题
引⽤
说明:有正斜杠与反斜杠之分,正斜杠,⼀般就叫做斜杠,符号为“/”;反斜杠的符号为“\”
引⽤
斜杠(/)在JAVA中没有什么特别的意义,就是代表⼀个字符‘/’;
反斜杠(\)则不然,它和紧跟着它的那个字符构成转义字符,如“\n”(表⽰换⾏)、“\””(表⽰字符‘”’)等,所以在字符串中要表⽰字符'\'要⽤“\\”来表⽰,例:如果你这样定义⼀个字符串String s = “name\sex”是错误的,要这样定义String s =
“name\\sex”;
引⽤
java replace方法注意:在正则表达式中的“\\”表⽰和后⾯紧跟着的那个字符构成⼀个转义字符(姑且先这样命名),代表着特殊的意义;所以如果你要在正则表达式中表⽰⼀个反斜杠\,应当写成“\\\\”。如果你这样获得⼀个Matcher,Matcher m =
Patternpile(“\\”).matcher(“\\”)将会报错,你应当这样写Matcher m = Patternpile(“\\\\”).matcher(“\\”)才是正确且匹配的
引⽤
接下来我们来看⼀下String类中replace(CharSequence target,CharSequence replacement)⽅法与replaceAll(String regex, String replacement)⽅法的区别:
我们先看⼀个例⼦:
1. publicstaticvoid main(String[] arg)throws OgnlException {
2. String s ="sdf\\a\\aa";
3. //把s中的反斜杠\ 替换为\\
4. System.out.println(s);
5. System.out.placeAll("\\\\", "\\\\\\\\"));
6. System.out.place("\\", "\\\\"));
7. }
public static void main(String[] arg) throws OgnlException {
String s ="sdf\\a\\aa";
//把s中的反斜杠\ 替换为\\
System.out.println(s);
System.out.placeAll("\\\\", "\\\\\\\\"));
System.out.place("\\", "\\\\"));
}
引⽤
可以看出上⾯两种都返回相同的替换结果。
这 ⾥的关键是placeAll()是⽤regular expression 来作为参数的。但是java本⾝的字符串对于转义符\也有类似的处理。⾸
先,java会把“\\\\”解释成⼀个字符串(其中包含两个char)。接下来,由于replaceAll是以正则表达式作为参数,所以“\\”被解释成⼀个regex。对于⼀个regex来说这就代表着⼀个字符,就是“\”。对后⾯的那个8个\来说,最终会被解释成“\\”。
换⾔之,假设placeAll()是以普通字符串,⽽不是regex作为参数,那么这样写代码: String target = placeAll('\\',
'\\\\'); 就可以了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论