【发布时间】:2015-02-08 10:09:08
【问题描述】:
我有一个字符串,其中包含多个必须提取的子字符串。将被提取的字符串在' 字符之间。
当我使用 indexOf 或 regex 时,我只能提取第一个或最后一个。
如何在不解析相同字符串的情况下提取它们并将它们放入数组或列表中?
resultData = "Error 205: 'x' data is not crawled yet. Check 'y' and 'z' data and update dataset 't'";
下面我试过了;
protected static String errorsTPrinted(String errStr, int errCode) {
if (errCode== 202 ) {
ArrayList<String> ar = new ArrayList<String>();
Pattern p = Pattern.compile("'(.*?)'");
Matcher m = p.matcher(errStr);
String text;
for (int i = 0; i < errStr.length(); i++) {
m.find();
text = m.group(1);
ar.add(text);
}
return errStr = "Err 202: " + ar.get(0) + " ... " + ar.get(1) + " ..." + ar.get(2) + " ... " + ar.get(3);
}
编辑
我使用了@MinecraftShamrock 的方法。
if (errCode== 202 ) {
List<String> getQuotet = getQuotet(errStr, '\'');
return errStr = "Err 202: " + getQuotet.get(0) + " ... " + getQuotet.get(1) + " ..." + getQuotet.get(2) + " ... " + getQuotet.get(3);
}
【问题讨论】:
-
这不应该那么复杂。你能发布一些你已经尝试过但很沮丧最终跑到这里来的东西吗?
-
'(.*?)'是你想要的。我不会向您展示完整的解决方案,请先自己尝试,如果您有问题,请告诉我们。 -
@MarounMaroun 我试过了,结果我只得到 'x' 而 y,z,t 结果消失了。
-
你应该循环所有匹配。
-
@LunaticFnatic 将其添加到您的问题中。这正是为什么这是一个“编辑”按钮。
标签: java regex string substring