如何在Java中拆分具有多个分隔符的String

时间:2013-01-13 16:38:19

标签: java string stringtokenizer

我正在努力获得所需的输出:

555
555
5555

使用代码:

public class Split {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub

    String phoneNumber = "(555) 555-5555";

    String[] splitNumberParts = phoneNumber.split(" |-");


    for(String part : splitNumberParts)
        System.out.println(part);

但是不知道如何从第一个元素中删除“()”。

提前致谢。

此致

4 个答案:

答案 0 :(得分:7)

StringTokenizer支持可以在字符串中列为第二个参数的多个分隔符。

StringTokenizer tok = new StringTokenizer(phoneNumber, "()- ");
String a = tok.nextToken();
String b = tok.nextToken();
String c = tok.nextToken();

在你的情况下,这将给出a = 555,b = 555,c = 5555。

答案 1 :(得分:4)

为什么不先替换?

String phoneNumber = "(555) 555-5555";
String cleaned = phoneNumber.replaceAll("[^0-9]",""); // "5555555555"

然后你可以使用substring来获得你想要的部分。

答案 2 :(得分:1)

如果您只想按顺序排列数字,那么您可以使用PatternMatcher类来查找匹配特定模式的所有子字符串,在您的情况下,{{1} }。

您需要使用Matcher#find()方法来获取与您的模式匹配的所有子字符串。并使用Matcher#group()打印匹配的子字符串。

以下是您的工作方式: -

\d+

答案 3 :(得分:1)

当你使用split时,java将返回一个字符串数组,该字符串与你提供的项目出现的位置分开,因此,如果你像现在这样进行拆分,你可以添加一些东西像这样:

phoneNumber.split(" |-|\\(|\\) ");

但那不是很好看,现在是吗?所以我们可以做这样的事情,它基本上告诉java删除任何不是数字的东西:

String[] splitNumberParts = phoneNumber.split("\\D+");