老生常谈java路径中的反斜杠和斜杠的区别
JAVA中的斜杠
有正斜杠与反斜杠之分,正斜杠,一般就叫做斜杠,符号为“/”;反斜杠的符号为“\”。
斜杠(/)在JAVA中没有什么特别的意义,就是代表一个字符‘/';
反斜杠(\)则不然,它和紧跟着它的那个字符构成转义字符,如“\n”(换行)、“\””(字符‘”‘)等,所以在字符串中要表示字符'\'要用“\\”来表示,例:如果你这样定义一个字符串Strings=“name\sex”是错误的,要这样定义Strings=“name\\sex”;
接下来我们来看一下String类中replace(CharSequencetarget,CharSequencereplacement)方法与replaceAll(Stringregex,Stringreplacement)方法的区别:
我们先看一个例子:
publicstaticvoidmain(String[]arg)throwsOgnlException{ Strings="sdf\\a\\aa"; //把s中的反斜杠\替换为\\ System.out.println(s); System.out.println(s.replaceAll("\\\\","\\\\\\\\")); System.out.println(s.replace("\\","\\\\")); }
可以看出上面两种都返回相同的替换结果。
这里的关键是String.replaceAll()是用regularexpression来作为参数的。但是java本身的字符串对于转义符\也有类似的处理。首先,java会把“\\\\”解释成一个字符串(其中包含两个char)。接下来,由于replaceAll是以正则表达式作为参数,所以“\\”被解释成一个regex。对于一个regex来说这就代表着一个字符,就是“\”。对后面的那个8个\来说,最终会被解释成“\\”。
换言之,假设String.replaceAll()是以普通字符串,而不是regex作为参数,那么这样写代码:Stringtarget=source.replaceAll('\\','\\\\');就可以了。
以上这篇老生常谈java路径中的反斜杠和斜杠的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。