【发布时间】:2017-09-25 07:27:41
【问题描述】:
我创建了一个返回列表的函数。 我正在传递一个字符串“(A,1),(Y,4),(F,5)”,我想根据括号将其拆分以获得3个单独的字符串对象,例如A,1,Y, 4、F、5 作为列表中的 3 个单独对象。 我使用 Java 8 创建它,但它只返回一个值,例如 A,1 功能是:
private List<String> getDataOnRegx(String str) {
Pattern filerRegx = Pattern.compile("\\(([a-zA-Z,0-9]*)\\s*\\),?");
Matcher regexMatcher = filerRegx.matcher(str);
return Stream.of(str).
filter(s -> regexMatcher.find() && regexMatcher.group(1) != null).
map(r -> new String(regexMatcher.group(1))).
collect(Collectors.toList());
}
我通过以下函数实现的预期结果,我没有使用任何 Java 8 功能:
private List<String> getDataOnRegx(String str) {
Pattern regex = Pattern.compile("\\(([a-zA-Z,0-9]*)\\s*\\),?");
Matcher regexMatcher = regex.matcher(str);
List<String>dataList = new ArrayList<String>();
while (regexMatcher.find()) {
if (regexMatcher.group(1) != null) {
dataList.add(regexMatcher.group(1));
}
}
System.out.println(dataList);
return dataList;
}
有人可以帮我获取列表中的所有对象吗?只是想帮助纠正我已经使用 Java 8 编写的函数。 严格来说,我必须使用 Java 8 编译器。
谢谢, 阿图尔
【问题讨论】:
-
嘿.. 我在不使用 Java-8 的情况下也实现了同样的目标。我也提到了这个功能。我想要的是使用 Java-8 来实现同样的事情,比如使用 Streming 等。
-
嗨,Holger,你提到的问题是完全不同的情况。