【问题标题】:Find indexs in a List containing a string [closed]在包含字符串的列表中查找索引[关闭]
【发布时间】:2014-08-20 21:18:27
【问题描述】:

我有一个包含许多 URL 的列表。其中许多 URL 包含字符串“recap”。我需要获取包含该特定字符串的每个索引。我该怎么办?

【问题讨论】:

  • 请发布一些关于你到目前为止所做的代码

标签: java string list


【解决方案1】:

你没有提供任何代码,所以看看这个例子并为你自己重写它;-)

import static java.util.stream.Collectors.toList;

// ...

final List<String> urls = Arrays.asList("foorecap", "recapfoo", "bar", "baz");
final List<String> recaps = urls.stream()
                                .filter(url -> url.contains("recap"))
                                .collect(toList());

【讨论】:

  • 这假定 Java 8 是光滑的。所以,如果你有选择,那就去吧。
  • @Chasmo 只是一个友好的观点,OP 要求索引而不是项目,但我可以给你正确的因为问题根本不明确。但我喜欢你的方式
【解决方案2】:

试试:

for(String url : urls) {
    int index = url.indexOf("recap");
    if(index != -1) {   // found
        System.out.println("index: " + index);
    }
}

【讨论】:

    【解决方案3】:

    你可以使用番石榴:

    Iterable<String> passedUrls = Iterables.filter(urls, new Predicate<String>() {
        @Override
        public boolean apply(String url) {
            return url.contains("recap");
        }
    });
    

    这是我尚未编译的另一个问题的解决方案的略微修改版本:https://stackoverflow.com/a/8636536/857994,但我认为它应该按原样工作。

    【讨论】:

      【解决方案4】:

      循环非常简单:

      List<String> urls = //your list of String URLS
      List<Integer> indexes = new ArrayList<>();
      for(int i = 0; i < urls.size(); i++) {
          if(urls.get(i).contains("recap")) {
              indexes.add(i);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-01
        • 2019-04-29
        • 1970-01-01
        相关资源
        最近更新 更多