繁体   English   中英

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

[英]How to split a String with multiple delimiters in Java

我想尝试这样的输出:

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);

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

提前致谢。

问候

StringTokenizer支持多个分隔符,这些分隔符可以作为第二个参数在字符串中列出。

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

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

为什么不先替换?

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

然后,您可以使用子字符串来获取所需的部分。

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

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

这是你如何做到的: -

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

// Create a Pattern object for your required Regex pattern
Pattern pattern = Pattern.compile("\\d+");

// Create a Matcher object for matching the above pattern in your string
Matcher matcher = pattern.matcher(phoneNumber);

// Use Matcher#find method to fetch all matching pattern.
while (matcher.find()) {
    System.out.println(matcher.group());
}

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM