日期:2014-05-20  浏览次数:20773 次

java字符串斜杠的困惑
先前用微软的VisualStudio时,'/'表示其本意,而'\'用来转义,如果想表示'\'字符本身需要用'\\'。正则表达式中则需要用@"\\"或"\\\\"

java的网上查了下资料,大部分文章说'/'用来转义,有的说'\'用来转义。最后一篇文章给我启发说windows下用'\'转义,unix和linux下用'/'转义。我自己在eclipse里试了下,写一个正则表达式,发现和VisualStudio里一样。我用的系统是XP。正则表达式用来匹配路径未尾的文件名:
java.util.regex.Pattern pt = java.util.regex.Pattern.compile("[^\\/]+$");

意思是如果我把eclipse安装在linux系统下,正则就得写成:
java.util.regex.Pattern pt = java.util.regex.Pattern.compile("[^\//]+$");是这个样子么?
晕啦,求指点

------解决方案--------------------
lz主要的疑惑是M windows和linux的文件路径分隔符不一样导致的,是这样么?
java中File.separator可以获取文件路径分隔符,建议这么来获得,提高可移植性及容错
M Windows下为 "\\"
Linux下位 "/"(这俩个都为一个char,但返回的是一个String)
------解决方案--------------------
\ java里的转义字符,应该和系统没有关系,如果有关系的话,那java还敢称作跨平台语言么


------解决方案--------------------
只要是C系列的语言,转移字符都是\,java也是C系列的呢
------解决方案--------------------
问题要知道本质,你首先混淆了两个概念,
第一,转移字符部分平台,部分系统,是java的jvm的规范,只跟虚拟机有关系,跟操作系统无关。
第二,跟操作系统有关的是文件系统,linux和window的文件系统不一样,他们规范不一样,路径不一样。
第三,转移字符和路径没关系,在什么时候转义都是\,至于为什么有时候要写\\,是因为我们希望输出\说以就是\\。
这么说明白了吗?

http://www.happyalaric.com