java的字符串分割数组为什么只能获取到数字?

public static void main(String[] args){
        String a = "4:水果|7:苹果";
        System.out.println(a.split("|")[0]);
    }

控制台打印一个 "4" 出来
我要打印的是 "4:水果" 这样的结果才对啊.
如果是a.split("|")[1],那么就是 "7:苹果" 才对.

阅读 4.4k
6 个回答
    "|"是正则表达式的关键字,需要转义一下,则正则表达式为"\|",
    根据 Java Language Specification 的要求,
    Java 源代码的字符串中的反斜线被解释为 Unicode 转义或其他字符转义。因此必须在字符串字面值中使用两个    
    反斜线,表示正则表达式受到保护,
    不被 Java 字节码编译器解释,所以在java使用这个正则表达式的时候还要加一个"\",变为"\\|"。
    String a = "4:水果|7:苹果";
    System.out.println(a.split("\\|")[0]);

可以去看看jdk的pattern类的文档的反斜线、转义和引用这节。

切割 "|" 要转义成 "\\|" 才可以的,所以你的情况就得这么玩:

public static void main(String[] args){

    String a = "4:水果|7:苹果";
    System.out.println(a.split("\\|")[0]);
}

不能直接用的,像上面说的,需要转义,a.split("\|")

|需要转义的:

"4:水果|7:苹果".split("\|")
 public String[] split(String regex) {
        return split(regex, 0);
    }

split用的是正则,而|匹配的是其实跟""空字符串一样,所以应该用楼上无趣说的那种转义

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题