如何用JS实现字符串每隔一个单词转为大写的功能?
问题分析
你原有代码的问题如下:
- 没有将输入字符串拆分为独立单词处理,直接对整个字符串执行大写转换
- 循环逻辑完全无效,第一次迭代就直接返回结果,没有执行任何遍历处理
- 没有按照「隔一个单词大写、单个单词全大写」的规则做区分判断
修正后的实现代码
function capitalize(str) { // 按空格拆分字符串为单词数组,兼容多空格分隔场景 const words = str.trim().split(/\s+/); // 单个单词直接转大写返回 if (words.length === 1) { return words[0].toUpperCase(); } // 遍历处理每个单词:索引从0开始计数,奇数位单词转大写,偶数位保持原样 const processedWords = words.map((word, index) => { return index % 2 === 1 ? word.toUpperCase() : word; }); // 拼接为空格分隔的字符串返回 return processedWords.join(' '); }
效果验证
- 输入
capitalize("asd asd asd asd"),输出asd ASD asd ASD,符合预期 - 输入
capitalize("asd"),输出ASD,符合预期
内容的提问来源于stack exchange,提问作者Jaceksl1
相关产品推荐
相关产品推荐

