我的作业有一个任务,我必须编写一个函数,将写入该函数的句子中的每个单词大写。我的想法是将每个单词转换为数组,创建一个循环,定位该数组的每个项目的第一个字母,然后将该数组转换回字符串。我提出的代码就是这个
function titleCase(string) {
var words = string.split(' ');
for (var i = 0; i < words.length; i++) {
const lettersUp = ((words[i])[0]).toUpperCase();
const result = words[i].replace((words[i])[0], lettersUp);
return result;
}
}
我现在遇到的问题是它只返回数组的第一个单词。从故障排除我一直在做我有一种感觉我搞砸了循环但我只是不知道如何。任何帮助将不胜感激。 感谢。
答案 0 :(得分:0)
您将从第一次迭代返回,因此您的代码无法正常工作。
您正在寻找的是这样的:
function titleCase(string) {
var words = string.split(" ");
for (var i = 0; i < words.length; i++) {
const lettersUp = ((words[i])[0]).toUpperCase();
words[i] = words[i].replace((words[i])[0], lettersUp);
}
return words.join(" ");
}
然而,正则表达式是正确的方法。请尝试使用。
答案 1 :(得分:0)
保持尽可能简单 - 不需要其他变量,例如lettersUp,你可以简单地操控单词数组中的字符串。
function titleCase(str) {
var words = str.split(' ');
for (var i = 0; i < words.length; i++) {
words[i] = words[i].charAt(0).toUpperCase() + words[i].substring(1);
}
return words.join(' ');
}