替换“\”的时候报错Unexpected internal error near index 1 \ ^_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 替换“\”的时候报错Unexpected internal error near index 1 \ ^

替换“\”的时候报错Unexpected internal error near index 1 \ ^

 2014/11/11 12:55:25  adminjun  程序员俱乐部  我要评论(0)
  • 摘要:发现还是有些东西没有刻子脑子里,,过段时间就没什么概念了,所以贴出来...以免再忘...在拆分字符串时遇到通过\来拆分,可是用所以想通过转义\\来拆分的时候会报异常publicclassMain{/***@paramargs*/publicstaticvoidmain(String[]args){Stringaa="g:\\a\\bb\\cc.gif";System.out.println(aa);/***因为涉及到两层,一个是JAVA的转义,一个是源代码的转义*正则表达式需要转义用\\表示\
  • 标签:

发现还是有些东西没有刻子脑子里,,过段时间就没什么概念了,所以贴出来...以免再忘...

?

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

?

    class="dp-j">
  1. public?class?Main?{??
  2. ??
  3. ????/**?
  4. ?????*?@param?args?
  5. ?????*/??
  6. ????public?static?void?main(String[]?args)?{??
  7. ????????String?aa?=?"g:\\a\\bb\\cc.gif";??
  8. ????????System.out.println(aa);??
  9. ????????/**??
  10. ?????????*?因为涉及到两层,一个是JAVA的转义,一个是源代码的转义?
  11. ?????????*?正则表达式需要转义用\\表示\;??
  12. ?????????*?而java的源代码里,字符串中需要转义用\\表示\。??
  13. ?????????*?因此累加在一起就必须是四个斜线\\\\,这样java转义后就是\\,而\\在正则里转义后为\这样就可以进行匹配了?
  14. ?????????*?有点绕,呵呵~?
  15. ?????????*/???
  16. ????????String[]?xx?=?aa.split("\\");??
  17. ????????for(String?cell:xx){??
  18. ????????????System.out.println(cell);??
  19. ????????}??
  20. ????}??
  21. ??
  22. }??


异常如下:

?

?

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



这时应该用\\\\

?

?

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


输出结果:

?

?

  1. g:\a\bb\cc.gif??
  2. g:??
  3. a??
  4. bb??
  5. cc.gif ?
  • 相关文章
发表评论
用户名: 匿名