[英]Split string in java based on integer delimeter
我试图根据基于整数的整数来分割几个字符串,同时仍然保留整数。
String theMessage = "1. First String. 2. Second String. 10. Tenth String. 20. Twentieth String.";
String delims = "(?<=(0*([0-9]{1,2}|100)))";
String[] questions = theMessage.split(delims);
System.out.println(Arrays.toString(questions));
但它将它们分开为:
1. First String. 2
. Second String. 1
1
0
. Tenth String. 2
0 \n
. Twentieth String
但我希望它们像这样分开:
1. First String.
2. Second String.
10. Tenth String.
20. Twentieth String.
基本上我希望每个分离的部分都是数组中的不同元素。
您可以在整数前面的空格上拆分,从而将每个组作为数组元素。
String s = "1. First String. 2. Second String. 10. Tenth String. 20. Twentieth String.";
String[] parts = s.split("\\s+(?=[0-9])");
System.out.println(Arrays.toString(parts));
产量
[1. First String., 2. Second String., 10. Tenth String., 20. Twentieth String.]
只要您不能在字符串中包含数字,以下内容就可以使用。
String numberedString = "1. First String. 2. Second String. 10. Tenth String. 20. Twentieth String.";
Pattern numberedStringPattern = Pattern.compile("([0-9]+)\\.([^0-9]+)");
Matcher numberedStringMatcher = numberedStringPattern.matcher(
numberedString);
while(numberedStringMatcher.find()) {
System.out.println("Found string "+numberedStringMatcher.group(
1)+" with value \""+numberedStringMatcher.group(2)+"\"");
}
此代码提供输出:
Found string 1 with value " First String. "
Found string 2 with value " Second String. "
Found string 10 with value " Tenth String. "
Found string 20 with value " Twentieth String."
因此,您可能希望使用trim()来删除返回的String值的开头和结尾处的空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.