将冒号分隔的字符串分割成几部分

时间:2020-06-03 17:59:03

标签: java string split

我是Java的新手,我正在尝试使用正则表达式。我想将一个字符串分成几个捕获组,并将它们存储在String数组中。

String[] pieces="User: text..text text".split("^(\\w):(.*)$");
System.out.println(pieces[0]);
//pices[0]="User: text..text text"

我想使用正则表达式:"User: text..text text""^(\\w:)(.*)$"拆分为正则表达式中提供的捕获组的数量(本例中为2)。我期望的是:

pieces[0]="User"
pieces[1]="text...text text"

可能有一个类似"User: foo:bar mr:potato"的字符串。我不想每个:字符分开,我只想"User:"" foo:bar mr: potato"。我想在不使用任何循环的情况下拆分它,这有可能吗?

5 个答案:

答案 0 :(得分:1)

如何?

String text = "User: text..text text";
String[] pieces = text.split(": ",2);
System.out.println(pieces[0]);
System.out.println(pieces[1]);

使用正则表达式,您可以这样做。

Pattern pattern = Pattern.compile("(\\w+): (.*)$");
Matcher m = pattern.matcher(text);
if (m.find()) {
    System.out.println(m.group(1));
    System.out.println(m.group(2));
}

两个都打印

User
text..text text

答案 1 :(得分:1)

Java还有一个split()方法,该方法限制了应用模式的次数

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#split(java.lang.String,int)

String[] pieces="User: text..text text".split(":",2);

答案 2 :(得分:0)

您可以使用Java中String类提供的split()函数来实现所需的功能。 String[] pieces = "User: text..text text".split(":");

答案 3 :(得分:0)

尝试按:

拆分
public class WordSpliter {

    public static void main(String[] args) {
        String[] pieces="User: text..text text".split(": ",2);
        for (String piece : pieces) {
            System.out.println(piece);
        }
    }
}

答案 4 :(得分:0)

如果您想使用实际的Regex模式/匹配器,则其设置如下

    String inputString = "User: text..text text";
    Pattern pattern = Pattern.compile("^(\\w):(.*)$");  
    Matcher matcher = pattern.matcher(inputString);

    while(matcher.find()) {
        for(int i = 0; i <= matcher.groupCount(); i++){
            //Go through all groups in this match
            System.out.println(matcher.group(i));
        }
    }