我试图根据基中的整数拆分几个字符串,同时仍然保留整数。
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));
参见Live demo
输出
[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值开头和结尾的空白。