Java 8 用replace方法和java8替换大数组中字符串的一部分
我有arrayJava 8 用replace方法和java8替换大数组中字符串的一部分,java-8,java-stream,Java 8,Java Stream,我有arrayString[]values=newstring[100],我需要用java8检查10到35之间的所有字符串。因为我不想用if和else 例如: for(int i = 10; i<=35; i++){ if (values[i].contains("something")){ values[i].replace("something", "something else"); } } for(int i=10;i我可以想到这一点,但它的可读性和有
String[]values=newstring[100]
,我需要用java8检查10到35之间的所有字符串。因为我不想用if和else
例如:
for(int i = 10; i<=35; i++){
if (values[i].contains("something")){
values[i].replace("something", "something else");
}
}
for(int i=10;i我可以想到这一点,但它的可读性和有效性并不比您已有的更高:
IntStream.rangeClosed(10, 35)
.forEach(ix -> values[ix] = values[ix].replace("something", "something2"));
这里有一种可能更简洁的替代方法:
Arrays.asList(values).subList(10, 35+1)
.replaceAll(s -> s.replace("something", "something else"));
注:
子列表
采用半开间隔,因此第二个参数具有+1
String.replace
的结果必须分配或返回,而不是丢弃,因为它当然不能修改原始字符串
- 调用
String.contains
没有意义,因为它是根据String.indexOf
实现的。String.replace
做的第一件事就是调用String.indexOf
并在找不到字符串时退出
在这里你不需要问任何问题。问题是什么?你有什么例外吗?我如何使用java8和少量代码行来解决这个问题?非常非常好:)