You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java 8 Stream实现除"or"外单词首字母大写并拼接字符串?

Java 8 Stream实现单词首字母大写(排除指定单词)

当然有简便的方案!而且刚好能解决你提到的拆分后无法还原原始字符串的问题——核心就是用Collectors.joining()来完成流元素的拼接。我直接给你完整的实现代码,再一步步解释细节:

完整实现代码

import java.util.Arrays;
import java.util.stream.Collectors;

public class WordCapitalizer {
    public static void main(String[] args) {
        String input = "Taxi or bus driver";
        String processedString = Arrays.stream(input.split(" "))
                // 对每个单词进行处理
                .map(word -> {
                    // 排除"or",直接返回原单词
                    if ("or".equals(word)) {
                        return word;
                    }
                    // 首字母大写,其余字母保持原大小写(如果需要统一小写可以用word.substring(1).toLowerCase())
                    return word.substring(0, 1).toUpperCase() + word.substring(1);
                })
                // 用空格拼接所有处理后的单词,还原成原始格式
                .collect(Collectors.joining(" "));

        System.out.println(processedString); // 输出: Taxi or Bus Driver
    }
}

关键细节说明

  1. 拆分字符串为流:
    这里用Arrays.stream(input.split(" "))把字符串按空格拆分成单词流,如果你需要处理更复杂的分隔符(比如多个空格、制表符),可以改用Pattern.compile("\\s+").splitAsStream(input),效果一致且更鲁棒。

  2. 处理单个单词:

    • 用map()操作遍历每个单词,判断是否是需要排除的"or",如果是直接返回原单词;
    • 对于其他单词,通过substring(0,1).toUpperCase()把首字母转大写,再拼接上原单词的剩余部分。如果你希望除首字母外其他字母统一小写,把word.substring(1)改成word.substring(1).toLowerCase()即可。
  3. 拼接还原字符串:
    这正是你之前卡住的地方!用Collectors.joining(" ")可以把流中的所有单词用空格连接起来,完美还原成你需要的格式,再也不用手动拼接啦。

扩展优化

如果需要忽略"or"的大小写(比如输入中的"OR"或"Or"也不处理),只需要把判断条件改成"or".equalsIgnoreCase(word)就行,这样无论"or"是什么大小写,都会被排除处理。

内容的提问来源于stack exchange,提问作者Philip Puthenvila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:35:10