【发布时间】:2019-02-16 22:35:25
【问题描述】:
我有以下命令输出:
NAME PLATFORM STATUS
---- -- ------
XAB Windows Yes
ABB Windows Yes
AB Windows No
ABAB Windows Yes
其中名称列具有唯一字符串。
我想查明名称列中是否存在输入字符串,使其与输入完全匹配。例如如果我在搜索 A 或 B,它会返回 false,AB 会返回 true。
我尝试过以下返回 false 的操作:
Arrays.stream(str.split("\n"))
.filter(line -> line.matches("^AB "))
.findFirst()
.isPresent()
string.contains() 似乎不合适,因为它不会进行严格的模式检查。
你们能建议一个使用流的合适的单行解决方案吗?谢谢。
【问题讨论】:
-
.filter(line -> line.matches("AB .*")) -
为什么不
.filter(line -> line.startsWith("AB"))或line.startsWith("AB ")?? -
@WiktorStribiżew 因为
line.startsWith("A")也将匹配,而且似乎 OP 不匹配 -
.startsWith()也将匹配 ABAB。我不想那样。 -
感谢@anubhava
line.matches("AB .*")工作。