无法理解拆分在java中的用法

无法理解拆分在java中的用法,java,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

我的代码是:-

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新手,尝试执行split,但无法理解它的概念,因为所有情况都有不同的答案,但它们之间到底有什么区别?

您所需要的一切都在Javadoc中
split
将给定的字符串解释为正则表达式,而不是文本字符串。请查找有关正则表达式语法的完整详细信息


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

拆分将使用公共分隔符将字符串拆分为字符串数组。一个更常见的例子是,如果您的数据以逗号分隔,如下所示:

1,2,3,4,5

然后,如果按逗号字符分割数据,将得到一个由5个字符串组成的数组:
[“1”、“2”、“3”、“4”、“5”]

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

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

在第三种情况下,
\a
表示字符BEL(ASCII 7)。字符串中没有此类字符,因此不会拆分字符串

有关表达式语法的完整指南,请参见


因此,第一个大小写-拆分数字,第二个是“一个单词”,第三个是所有字符串-未找到bell字符您可能知道,
split
方法使用正则表达式模式拆分字符串:

  • 第一种情况
    \d
    使用数字作为分隔符将其拆分
  • 第二种情况是使用单词边界将其拆分,因此实际上有一个空字符串和整个余数
  • 第三种情况
    \a
    是一个特殊字符,它不存在于正在拆分的字符串中,因此您只有一个标记

看看所有的正则表达式选项。

是的,我知道了……但是你能解释一下\\b(单词边界)和\\b(非单词边界)之间的区别吗?这也是值得注意的一点。例如,在第一个例子中,“d”代表正则表达式中的“digit”,所以这就是为什么最后只有“abc”。你需要什么解释,希曼苏?你在谷歌上搜索过“JavaRegexWord边界”吗。
\d  A digit: [0-9]
\a  The alert (bell) character ('\u0007')
\b  A word boundary