【发布时间】:2019-06-09 01:11:45
【问题描述】:
使用 java.util.regex 提取子字符串我发现自己实现了相同的代码模式来解决调用:
Pattern p = Pattern.compile(pattern); // can be static final
Matcher m = p.matcher(input);
if (m.find()) { // or m.matches()
foo(m.group(x));
} else {
...
}
是否有功能扩展或流行的库(guava / apache commons)可以避免丑陋的不必要且容易出错的局部变量,例如:
Pattern p = Pattern.compile(pattern); // can be static final
p.matchedGroup(input, x) // return Optional<String>
.map(group -> foo(group))
.orElse(...);
还有一个匹配结果流,例如:
Pattern p = Pattern.compile(pattern);
p.findMatches(input)
.map((MatchResult mr) -> {
mr.groupsIfPresent(x).map(g -> foo(g)).orElse(...)
})
.findFirst();
似乎 Java8 中唯一的功能添加是 .splitAsStream(),但这仅在尝试拆分匹配项时才有帮助。
【问题讨论】: