繁体   English   中英

Java:使用较少的代码分割字符串

[英]Java: Split a string with less code in method

我现在有一些像这种模式的输入:

org.apache.commons.fileupload,版本1.2.1 =,org.apache.commons.fileuplo> ad.disk,版本3.0.0 =,org.apache.commons.fileupload.servlet,版本= 1.2> 0.1,有机.apache.commons.fileupload.util,版本1.2.1 =,org.apache.commons。> IO,版本1.4.0 =,org.apache.commons.io.filefilter,版本1.4.0 =,org.apa> che.commons.io.output,版本1.4.0 =,org.apache.felix.inventory,版本=> 1.0.0,org.apache.felix.webconsole,版本3.3.0 =,org.apache.felix.webcon > sole.bundleinfo,version = 1.0.0,org.apache.felix.webconsole.i18n,version => 1.0.0]属性[0]:org.apache.commons.fileupload

我需要将其拆分并存储在表或列表中,如下所示:

其中:(示例)

 String[] attributes = inputs.split();
 attributes[0]: org.apache.commons.fileupload,version=1.2.0
 attributes[1]: org.apache.commons.fileupload.disk,version=3.0.0

  .....

我尝试了一些代码:

attributes = input.split("((,version=)*([0-9],))");
but i got: 
attributes[0]: org.apache.commons.fileupload,version=1.2.
attributes[1]: org.apache.commons.fileupload.disk,version=3.0.

凡始终缺少版本= 1.2.X的最后一位!

我希望有人能帮助我

我认为对于此特定的堆栈跟踪,分割的最佳模式是:

,(?=(?:org|com)\\.)

也就是说,在堆栈跟踪的每一行中以最后的逗号分隔。

String[] parts = text.split(",(?=(?:org|com)\\.)");
for (String part : parts) {
    System.out.println(part);
}

输出:

org.apache.commons.fileupload,version=1.2.1
org.apache.commons.fileupload.disk,version=3.0.0
org.apache.commons.fileupload.servlet,version=1.2.1
org.apache.commons.fileupload.util,version=1.2.1
org.apache.commons.io,version=1.4.0
org.apache.commons.io.filefilter,version=1.4.0
org.apache.commons.io.output,version=1.4.0
org.apache.felix.inventory,version=>1.0.0
org.apache.felix.webconsole,version=3.3.0
org.apache.felix.webconsole.bundleinfo,version=1.0.0
org.apache.felix.webconsole.i18n,version=>1.0.0] attributes[0]:org.apache.commons.fileupload

关于当堆栈跟踪提到其他软件包时会发生什么,我们可以在替换中添加另一个前缀。

尝试使用以下正则表达式,尽管您已将其关闭:

(([a-zA-Z.0-9]*,version=>?[0-9.]*)|[a-zA-Z.0-9]*),?

暂无
暂无

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

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