如何利用String.startsWith()筛选出列表中所有以https开头的网址?

2026-04-30 16:501阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计560个文字,预计阅读时间需要3分钟。

如何利用String.startsWith()筛选出列表中所有以https开头的网址?

使用`String.startsWith()`配合`stream().filter()`或传统循环即可完成,关键是要确保字符串非空且协议头匹配准

使用 Stream + startsWith 过滤(推荐)

Java 8+ 中最简洁的方式是结合流式处理:

  • 先检查字符串是否为 null 或空白,避免空指针异常
  • 调用 url.startsWith("https://") 判断前缀(注意带斜杠)
  • 收集结果为新列表
示例代码:

List<String> urls = Arrays.asList( "https://example.com", "http://test.org", "https://api.github.com", "ftp://files.example", null, "https://" ); List<String> httpsUrls = urls.stream() .filter(Objects::nonNull) .filter(url -> url.startsWith("https://")) .collect(Collectors.toList()); // 结果:["https://example.com", "https://api.github.com", "https://"]

用 for 循环手动筛选(兼容老版本)

如果项目还在用 Java 7 或需更明确控制逻辑,可用传统方式:

  • 遍历原列表,跳过 null 和空字符串
  • 对每个有效字符串调用 startsWith("https://")
  • 符合条件的添加到新集合中
示例代码:

List<String> httpsUrls = new ArrayList<>(); for (String url : urls) { if (url != null && !url.trim().isEmpty() && url.startsWith("https://")) { httpsUrls.add(url); } }

注意协议头的写法细节

startsWith() 是严格字符匹配,常见易错点:

  • 写成 "https" 会误匹配 "httpsomething" —— 一定要加 "://"
  • 不区分大小写?默认区分。如需忽略大小写,改用 url.toLowerCase().startsWith("https://")
  • 开头有空格?先用 trim() 处理,否则 " https://..." 不会匹配

扩展:支持多种协议(如 https 或 http)

若要同时匹配多个协议头,可改用正则或预定义集合判断:

  • 用正则:url != null && url.matches("^(https?|ftp)://.*$")
  • 或用 Set 预存协议:Set.of("https://", "http://", "ftp://").stream().anyMatch(url::startsWith)
标签:ps

本文共计560个文字,预计阅读时间需要3分钟。

如何利用String.startsWith()筛选出列表中所有以https开头的网址?

使用`String.startsWith()`配合`stream().filter()`或传统循环即可完成,关键是要确保字符串非空且协议头匹配准

使用 Stream + startsWith 过滤(推荐)

Java 8+ 中最简洁的方式是结合流式处理:

  • 先检查字符串是否为 null 或空白,避免空指针异常
  • 调用 url.startsWith("https://") 判断前缀(注意带斜杠)
  • 收集结果为新列表
示例代码:

List<String> urls = Arrays.asList( "https://example.com", "http://test.org", "https://api.github.com", "ftp://files.example", null, "https://" ); List<String> httpsUrls = urls.stream() .filter(Objects::nonNull) .filter(url -> url.startsWith("https://")) .collect(Collectors.toList()); // 结果:["https://example.com", "https://api.github.com", "https://"]

用 for 循环手动筛选(兼容老版本)

如果项目还在用 Java 7 或需更明确控制逻辑,可用传统方式:

  • 遍历原列表,跳过 null 和空字符串
  • 对每个有效字符串调用 startsWith("https://")
  • 符合条件的添加到新集合中
示例代码:

List<String> httpsUrls = new ArrayList<>(); for (String url : urls) { if (url != null && !url.trim().isEmpty() && url.startsWith("https://")) { httpsUrls.add(url); } }

注意协议头的写法细节

startsWith() 是严格字符匹配,常见易错点:

  • 写成 "https" 会误匹配 "httpsomething" —— 一定要加 "://"
  • 不区分大小写?默认区分。如需忽略大小写,改用 url.toLowerCase().startsWith("https://")
  • 开头有空格?先用 trim() 处理,否则 " https://..." 不会匹配

扩展:支持多种协议(如 https 或 http)

若要同时匹配多个协议头,可改用正则或预定义集合判断:

  • 用正则:url != null && url.matches("^(https?|ftp)://.*$")
  • 或用 Set 预存协议:Set.of("https://", "http://", "ftp://").stream().anyMatch(url::startsWith)
标签:ps