先前用微软的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("[^\//]+$");是这个样子么?
晕啦,求指点

解决方案 »

  1.   

    lz主要的疑惑是M windows和linux的文件路径分隔符不一样导致的,是这样么?
    java中File.separator可以获取文件路径分隔符,建议这么来获得,提高可移植性及容错
    M Windows下为 "\\"
    Linux下位 "/"(这俩个都为一个char,但返回的是一个String)
      

  2.   

    谢谢,我是搞不清楚java中字符串转义字符到底是什么
      

  3.   

    是\
    以输出一段话为例:
    需要输出的话:the java say:"hello world!"
    双引号在java中是表示字符串的,如果不转义,则无法输出显示,所以需要用到转义符
    System.out.print("the java say:\"hello world\"");这样就能输出双引号了
      

  4.   

    \  java里的转义字符,应该和系统没有关系,如果有关系的话,那java还敢称作跨平台语言么
      

  5.   

    只要是C系列的语言,转移字符都是\,java也是C系列的呢
      

  6.   

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