- <blockquote>String name = "c:\\1\\2\\3.txt";
复制代码 以上代码:很简单,就是拿反斜杠去切这个目录
但是相信很多人都有不少疑问:"\\\\"到底是怎么一回事。(包括我自己一开始听毕老师讲课的时候也没有听明白。)
首先咱来说一下这个目录:"c:\\1\\2\\3.txt" ,
这个应该不用多解释了,大家都知道,"\"在编译时有特殊的含义。"\t"是代表制表符,"\\"是代表一个反斜杠
所以在运行的时候,内存中这个字符串是这样子的。"c:\1\2\3.txt"
再说下"\\\\":
这个呢,按照普遍的思维想法应该是,既然我是用一个反斜杠去切,那么应该是写成"\\"这样才对,为什么是需要写四个。
通过查阅了正则表达式,发现,在正则表达式中。"\\"才是代表一个反斜杠。茅塞顿开.
"\\\\",首先经过的是java的编译之后,在内存中,就是变成了"\\",被转义成了两个反斜杠,然后才将它作为一个正则表达式传递给了split()的参数。
下面再看以下代码:
- String name = "c:\\1\\2\\3.txt";
- BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
- //输入一个正则表达式对目录进行切割。
- String regex = bufr.readLine();
- String[] arr = name.split(regex);
- for(String subName : arr) {
- System.out.println(subName);
- }
复制代码
在这里要注意了:输入的时候,请不要输入\\\\
否则,你会发现,怎么没切到。是不是得磨一下刀了。哈哈....
其实不是的,当读取控制台的数据时,这时候已经不是编译时期了,是运行时期了,java的编译管不到这一块,你输入的是什么,内存中的数据就是什么。
所以这个正则表达式实际上是\\\\代表的是两个反斜杠,当然切不到。
@耀阳圣尊
明天要面试了,支个招吧,怎么我上一次就没有通过呢?给我的题能做出来,但是叫我说面向对象,反射,IO,集合,这些概念的时候,总结得稍差。
java注重的是实践,还是理论知识?就差在语言组织能力上了,意思差不多都懂,也能用。我该怎么做?圣尊。
|
|