【发布时间】:2021-09-16 20:28:08
【问题描述】:
我正在使用 java 流,但我遇到了问题。我有这个代码:
clients.stream()
.map(Client::getDescription)
.map(x -> x.substring(x.lastIndexOf("_v")))
.map(x -> x.substring(2))
.mapToInt(Integer::parseInt)
.max()
.getAsInt();
每个客户的描述可能是“John_abc_v1”、“Bill_crce_v2”、“Joe_ghhj_V3”...我得到最大值,在这种情况下为 3...但问题是 v 可以是小写或大写,我不知道如何解决,所以这条线不起作用.map(x -> x.substring(x.lastIndexOf("_v"))) 当“V”为大写时我得到String index out of range -1。我该如何解决?任何反馈都将不胜感激。
【问题讨论】:
-
先将所有内容都转换为小写?
-
substring不需要两张地图:x.substring(x.lastIndexOf(...) + 2)。 -
你也可以
x.replaceAll(".*(\d+)$", "$1")。
标签: java string java-8 java-stream