我正在使用java流,我遇到了一个问题。我有以下代码:
clients.stream()
.map(Client::getDescription)
.map(x -> x.substring(x.lastIndexOf("_v")))
.map(x -> x.substring(2))
.mapToInt(Integer::parseInt)
.max()
.getAsInt();
每个客户的描述可以是“john__v1”、“bill_crce_v2”、“joe_Ghj_v3”。。。我得到最大值,在这种情况下3。。。但问题是v可以是小写或大写,我不知道如何解决这个问题,所以这行代码不起作用 .map(x -> x.substring(x.lastIndexOf("_v")))
我明白了 String index out of range -1
当“v”为大写时。我如何解决这个问题?任何反馈都将受到重视。
1条答案
按热度按时间zdwk9cvp1#
有多种方法,其中只有几个:
按照sweeper的建议,将整个字符串小写。这意味着
V
将转换为v
,这样你就可以找到它了lastIndexOf
.使用正则表达式替换您不需要的字符串部分,即除了尾随数字以外的所有内容:
那么,这件事就无关紧要了
V
.写一个查找尾随数字的小方法:
并从Map上呼叫: