我有数组String[] values = new String[100]
,我需要用java8检查10到35之间的所有字符串。因为我不想用if和else来做。
例如:
for(int i = 10; i<=35; i++){
if (values[i].contains("something")){
values[i].replace("something", "something else");
}
}
我怎么能用java8和少量的代码行来做呢?
请帮助我答案 0 :(得分:3)
这是一种可能更清洁的替代方法:
Arrays.asList(values).subList(10, 35+1)
.replaceAll(s -> s.replace("something", "something else"));
注意:
subList
需要半开的间隔,因此第二个arg有+1
。
必须分配或退回String.replace
的结果,而不是丢弃,因为它当然无法修改原始字符串
调用String.contains
是没有意义的,因为这是以String.indexOf
来实现的。 String.replace
做的第一件事就是调用String.indexOf
并在找不到字符串时纾困。
答案 1 :(得分:2)
我可以想到这一点,但它没有你现有的那么可读或有效:
IntStream.rangeClosed(10, 35)
.forEach(ix -> values[ix] = values[ix].replace("something", "something2"));