我想拆分一个看起来像这样的字符串:
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并循环但它仍然无法正常工作。
答案 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]);
}