java - Java:在方法中使用更少的代码拆分字符串
问题描述
我现在有一些像这种模式的输入:
org.apache.commons.fileupload,version=1.2.1,org.apache.commons.fileuplo>ad.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.apa> che.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.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.
version=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
关于堆栈跟踪提到其他包时会发生什么,我们可以在替代项中添加另一个前缀。