如何利用String.startsWith()筛选出列表中所有以https开头的网址?
- 内容介绍
- 文章标签
- 相关推荐
本文共计560个文字,预计阅读时间需要3分钟。
使用`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)
本文共计560个文字,预计阅读时间需要3分钟。
使用`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)

