在java中基于整数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));

参见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值开头和结尾的空白。

最新更新