JavaScript Title Case函数实现问题:当前输出异常需修正
解决Title Case函数的输出问题
嘿,我来帮你修复这个Title Case函数的问题!你现在的代码只输出了每个单词的首字母(AKP),是因为你只把首字母大写后拼接到结果里,完全漏掉了每个单词的剩余部分。咱们来一步步修正它:
问题根源
你的原代码逻辑是:把字符串转小写→拆成单词数组→遍历每个单词,只取首字母大写后加到result里。这样自然就只得到了首字母的拼接,丢掉了单词的其他字符。
修正方案(现代写法)
用map方法来更简洁地处理每个单词,同时保留完整的单词内容:
function title_case(str) { // 先把整个字符串转小写,再按空格拆分成单词数组 const words = str.toLowerCase().split(" "); // 遍历每个单词,处理成首字母大写、其余字母小写的形式 const titleCasedWords = words.map(word => { // 处理空字符串(比如输入有连续空格的情况),避免报错 if (!word) return word; // 首字母大写 + 单词从第2个字符开始的剩余部分 return word.charAt(0).toUpperCase() + word.slice(1); }); // 把处理好的单词数组重新拼接成完整字符串 return titleCasedWords.join(" "); }
测试你的输入:
document.write(title_case("a kitty PUrrs"));
输出会是:A Kitty Purrs,完全符合Title Case的要求。
如果你习惯用原for循环修改
也可以在你原来的代码基础上调整,补上单词剩余部分的拼接,同时处理空格:
function title_case(String) { var result = ""; var text = String.toLowerCase().split(" "); for (var i = 0; i < text.length; i++) { var word = text[i]; // 跳过空单词(处理连续空格) if (!word) continue; var c = word.charAt(0).toUpperCase(); // 获取单词除首字母外的剩余部分 var restOfWord = word.slice(1); // 如果不是第一个单词,先加空格再拼单词 if (i > 0) { result += " "; } result += c + restOfWord; } return result; }
这个版本同样能得到正确的输出,而且和你原来的代码结构更接近。
内容的提问来源于stack exchange,提问作者Kitty
相关产品推荐
相关产品推荐

