当遇到用\来分隔字符串

在拆分字符串时遇到通过 \来拆分,可是用所以想通过转义 \\ 来拆分的时候会报异常

public class Main {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        String aa = "g:\\a\\bb\\cc.gif";  
        System.out.println(aa);  
        /**  
         * 因为涉及到两层,一个是JAVA的转义,一个是源代码的转义 
         * 正则表达式需要转义用\\表示\;  
         * 而java的源代码里,字符串中需要转义用\\表示\。  
         * 因此累加在一起就必须是四个斜线\\\\,这样java转义后就是\\,而\\在正则里转义后为\这样就可以进行匹配了 
         * 有点绕,呵呵~ 
         */   
        String[] xx = aa.split("\\");  
        for(String cell:xx){  
            System.out.println(cell);  
        }  
    }  
  
}

异常如下:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1  
\  
 ^  
    at java.util.regex.Pattern.error(Pattern.java:1713)  
    at java.util.regex.Pattern.compile(Pattern.java:1466)  
    at java.util.regex.Pattern.<init>(Pattern.java:1133)  
    at java.util.regex.Pattern.compile(Pattern.java:823)  
    at java.lang.String.split(String.java:2292)  
    at java.lang.String.split(String.java:2334)  
    at cn.osl.businessagent.test.Main.main(Main.java:18) 

这时应该用\\\\

public class Main {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        String aa = "g:\\a\\bb\\cc.gif";  
        System.out.println(aa);  
        /**  
         * 因为涉及到两层,一个是JAVA的转义,一个是源代码的转义 
         * 正则表达式需要转义用\\表示\;  
         * 而java的源代码里,字符串中需要转义用\\表示\。  
         * 因此累加在一起就必须是四个斜线\\\\,这样java转义后就是\\,而\\在正则里转义后为\这样就可以进行匹配了 
         * 有点绕,呵呵~ 
         */   
        String[] xx = aa.split("\\\\");  
        for(String cell:xx){  
            System.out.println(cell);  
        }  
    }  
  
}  

输出结果:

g:\a\bb\cc.gif  
g:  
a  
bb  
cc.gif



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值