通过自动递增数字在Java中拆分String

时间:2017-12-13 21:19:51

标签: java string

我想拆分一个看起来像这样的字符串:

1. Richard Freitag Ger 370 2. Andreas Wellinger Ger 319 3. Daniel Andre Tande Nor 280 4. Stefan Kraft Aut 212 5. Johann Andre Forfang Nor 205

我想用索引号(1.,2。,...)拆分此文本。输出应该如下所示:

1. Richard Freitag Ger 370
2. Andreas Wellinger Ger 319
... etc... 

我尝试过StringTokenizer并循环但它仍然无法正常工作。

2 个答案:

答案 0 :(得分:3)

正则表达式并没有真正的机制来确定数字是否符合1 2 3的顺序。它对字符类型的操作更多(如果它是一个数字,或者如果它等于其他字符)。但根据您的示例,您可能希望拆分空格,其后面有数字后跟点

在这种情况下,您可以使用split("\\s(?=\\d+[.])")

(?=...)被称为look-ahead,并确保在该位置存在与...匹配的正则表达式,但它不会在匹配中包含它,因此拆分只会消耗< / em>空格,但会留下数字

演示:

String yourText = "1. Richard Freitag Ger 370 2. Andreas Wellinger Ger 319 3. Daniel Andre Tande Nor 280 4. Stefan Kraft Aut 212 5. Johann Andre Forfang Nor 205";
String[] array = yourText.split("\\s(?=\\d+[.])");
for (String text : array){
    System.out.println(text);
}

输出:

1. Richard Freitag Ger 370
2. Andreas Wellinger Ger 319
3. Daniel Andre Tande Nor 280
4. Stefan Kraft Aut 212
5. Johann Andre Forfang Nor 205

答案 1 :(得分:0)

如果索引号从1开始并且是连续的,这将为您提供预期的输出:

    String input = "1. Richard Freitag Ger 370 2. Andreas Wellinger Ger 319 3. Daniel Andre Tande Nor 280 4. Stefan Kraft Aut 212 5. Johann Andre Forfang Nor 205";
    String[] items = input.split("\\d+\\.");
    for (int i = 1; i < items.length; i++) {
        System.out.println("" + i + ". " + items[i]);
    }