黑马程序员技术交流社区

标题: String类的split方法的疑问 [打印本页]

作者: 王威    时间: 2012-10-18 21:14
标题: String类的split方法的疑问
代码一枚
  1. public class Test {
  2.        
  3.         public static void main(String[] args) {
  4.                 method1();
  5.                 method2();
  6.         }

  7.         public static void method1() {
  8.                 String s="asdasd(adsad23-23)";//英状态下的括号
  9.                 String[] ss=s.split("(|)");//英文状态下的括号
  10.                 System.out.println("长度:"+ss.length);
  11.                 System.out.println(ss[0]);
  12.                 System.out.println(ss[1]);
  13.         }
  14.        
  15.         public static void method2() {
  16.                 String s="asdasd(adsad23-23)";//中文状态下的括号
  17.                 String[] ss=s.split("(|)");//中文状态下的括号
  18.                 System.out.println("长度:"+ss.length);
  19.                 System.out.println(ss[0]);
  20.                 System.out.println(ss[1]);
  21.         }
  22. }
复制代码
运行结果:
长度:19

a
长度:2
asdasd
adsad23-23

谁给我解释一下,为什么是这样的?
作者: 黄小贝    时间: 2012-10-18 21:20
本帖最后由 黄小贝 于 2012-10-18 21:23 编辑

目测少转义字符~~   


作者: 王威    时间: 2012-10-18 21:27
黄小贝 发表于 2012-10-18 21:20
目测少转义字符~~

如果不加转义字符,你给我解释一下是什么意思
作者: 陈琦    时间: 2012-10-18 21:27
英文下的括号是需要进行转义的,所以写成 String[] ss=s.split("\\(|\\)"); 就和中文的一样了,但是为什么中文下的括号为什么不需要转义,我不明白,问元芳吧。
作者: 丁旭    时间: 2012-10-18 21:29
本帖最后由 丁旭 于 2012-10-18 21:30 编辑

public static void method1() {

            String s="asdasd(adsad23-23)";//英状态下的括号

            String[] ss=s.split("\\(|\\)");//英文状态下的括号

            System.out.println("长度:"+ss.length);

            System.out.println(ss[0]);

            System.out.println(ss[1]);

    }
String[] ss=s.split(\\(|\\));为左右括号加转义字符


作者: 徐梦侠    时间: 2012-10-18 21:34
同问,为什么中文括号中间改为双或,结果就跟英文一样是长度19呢?
public static void method2() {
            String s="asdasd(adsad23-23)";//中文状态下的括号
            String[] ss=s.split("(||)");//中文状态下的括号中间用双或
            System.out.println("长度:"+ss.length);
            for(String s1 : ss){
             System.out.print(s1+":");
            }
            System.out.println();
            System.out.println(ss[0]);
            System.out.println(ss[1]);
    }
打印结果,同英文括号的。
作者: 黄小贝    时间: 2012-10-18 21:35
王威 发表于 2012-10-18 21:27
如果不加转义字符,你给我解释一下是什么意思

不加转移字符等价于 String[] ss=s.split("");




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2