繁体   English   中英

基于整数分隔符在java中拆分字符串

[英]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));

查看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值的开头和结尾处的空格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM