无法理解在java中使用split

时间:2012-08-01 20:45:32

标签: java

我的代码是: -

class SplitString {
    public static void main(String[] args) {
        Pattern p;
        String test = "a1b2c3";
        String[] token1 = test.split("\\d");
        System.out.println("first case : " + token1.length);

        for (String s : token1)
            System.out.print(s + " ");

        String[] token2 = test.split("\\b");
        System.out.println("\n\nsecond case : " + token2.length);

        for (String s : token2)
            System.out.print(s + " ");

        String[] token3 = test.split("\\a");
        System.out.println("\n\nthird case : " + token3.length);

        for (String s : token3)
            System.out.print(s + " ");
    }
}

输出: -

first case : 3
a b c

second case : 2
 a1b2c3

third case : 1
a1b2c3

我是java的新手,并试图执行拆分,但无法掌握其概念,因为所有案例都有不同的答案,但它们之间的区别究竟是什么?

5 个答案:

答案 0 :(得分:5)

你需要的就是Javadoc。 split将您提供的字符串解释为正则表达式,而不是文字字符串。请查找正则表达式语法here的完整详细信息。

或者,如果您使用的是Eclipse,则可以使用Eclipse的“查找”对话框来播放正则表达式(选中“正则表达式”复选框)。

答案 1 :(得分:1)

Split会使用公共分隔符将字符串分解为字符串数组。一个更常见的例子是,如果您的数据是以逗号分隔的,那么:

1,2,3,4,5

然后,如果你在逗号字符上分割数据,你最终会得到一个包含5个字符串的数组: [ “1”, “2”, “3”, “4”, “5”]

答案 2 :(得分:1)

在第一种情况下,分隔符\d表示任何数字。字符串在每组数字处分开。

在第二种情况下,\b表示单词边界。字符串的开头计数,因此字符串在那里被分割。

在第三种情况下,\a表示字符BEL(ASCII 7)。

表示字符串中没有这样的字符

找到表达式语法的完整指南here.

答案 3 :(得分:1)

请参阅Pattern class

\d  A digit: [0-9]
\a  The alert (bell) character ('\u0007')
\b  A word boundary

所以第一种情况 - 分裂数字,第二种“一个字”,第三种所有字符串 - 贝尔字符未找到

答案 4 :(得分:1)

正如您所知,split方法使用正则表达式模式来分割字符串:

  • 第一个案例\d使用数字数字作为分隔符将其拆分
  • 第二个案例\b使用单词边界拆分它,所以你实际上有一个空字符串和整个余数
  • 第三种情况\a是一个特殊字符,在您要拆分的字符串中不存在,因此您只有一个令牌

查看所有正则表达式选项的here