2017-09-13 833 views
3

我有数组String[] values = new String[100],我需要用java8检查从10到35的所有字符串。因为我不想用if和else来做。用替换方法和java8替换大数组中的一部分字符串

例如:

for(int i = 10; i<=35; i++){ 
    if (values[i].contains("something")){ 
     values[i].replace("something", "something else"); 
    } 
} 

如何与java8和和代码行的少量做呢?

帮我请

+0

你不要在这里提问。问题是什么?你有什么例外吗? –

+0

我怎么能用java8和少量的代码行呢? – noxi

回答

3

这里是一个替代方法,它可能是有点清洁:

Arrays.asList(values).subList(10, 35+1) 
      .replaceAll(s -> s.replace("something", "something else")); 

注:

  • subList需要半开间隔,因此第二个参数有+1

  • String.replace结果必须分配或退还,不扔掉,因为当然不能修改原始字符串

  • 有呼吁String.contains因为这是在String.indexOf方面实现没有任何意义。 String.replace所做的第一件事情之一是拨打String.indexOf,如果找不到字符串,请拨出电话。

+0

哦,这是我的解决方案最好的问题!!!!!!!!!!!!! – noxi

2

我能想到这一点,但是你已经到位这不是任何更具可读性或大于有效:

IntStream.rangeClosed(10, 35) 
      .forEach(ix -> values[ix] = values[ix].replace("something", "something2")); 
+1

非常非常喜欢:) – noxi