0

我的代码是:-

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 但无法掌握它的概念,因为所有案例都有不同的答案,但它们之间到底有什么区别?

4

5 回答 5

5

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

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

于 2012-08-01T20:49:33.197 回答
1

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

1,2,3,4,5

然后,如果你用逗号字符分割你的数据,你最终会得到一个由 5 个字符串组成的数组: ["1","2","3","4","5"]

于 2012-08-01T20:50:34.830 回答
1

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

在第二种情况下,\b表示一个单词边界。字符串的开头很重要,因此字符串在那里被拆分。

在第三种情况下,\a表示字符 BEL (ASCII 7)。字符串中没有这样的字符,所以字符串没有被拆分。

可以在此处找到表达式语法的完整指南。

于 2012-08-01T20:50:45.973 回答
1

模式类

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

所以第一种情况 - 拆分数字,第二个“一个单词”,第三个所有字符串 - 找不到响铃字符

于 2012-08-01T20:51:41.953 回答
1

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

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

这里查看所有正则表达式选项。

于 2012-08-01T20:51:45.350 回答