A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王威 中级黑马   /  2012-10-18 21:14  /  1586 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码一枚
  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

谁给我解释一下,为什么是这样的?

评分

参与人数 1技术分 +1 收起 理由
谭立文 + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
本帖最后由 黄小贝 于 2012-10-18 21:23 编辑

目测少转义字符~~   

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
黄小贝 发表于 2012-10-18 21:20
目测少转义字符~~

如果不加转义字符,你给我解释一下是什么意思
回复 使用道具 举报
英文下的括号是需要进行转义的,所以写成 String[] ss=s.split("\\(|\\)"); 就和中文的一样了,但是为什么中文下的括号为什么不需要转义,我不明白,问元芳吧。
回复 使用道具 举报
本帖最后由 丁旭 于 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(\\(|\\));为左右括号加转义字符

回复 使用道具 举报
同问,为什么中文括号中间改为双或,结果就跟英文一样是长度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:27
如果不加转义字符,你给我解释一下是什么意思

不加转移字符等价于 String[] ss=s.split("");
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马