Java 8 用replace方法和java8替换大数组中字符串的一部分

Java 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我可以想到这一点,但它的可读性和有

我有array
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和少量代码行来解决这个问题?非常非常好:)