请帮帮我。我正在做运动,如果所有条件都执行,我就不会理解我做错了什么。任务包括返回提供的字符串,其中只有每个单词的首字母大写。我的代码执行这个条件,但它并没有让我领先。
function titleCase(str) {
var text = str.toLowerCase();
var arr = text.split(" ");
var txt = " ";
var i;
for(i=0; i < arr.length; i++) {
txt += arr[i][0].toUpperCase() + arr[i].slice(1) + " " ;
}
return txt;
}
titleCase("sHoRt AnD sToUt");
答案 0 :(得分:1)
您正在添加额外的空格([AllowAnonymous]
应为var txt = " "
),请尝试以下方式:
var text = ''
答案 1 :(得分:0)
如果您的目标是返回首字母大写的字符串,我可以在输出中看到一个问题。你应该回来了
"Short And Stout"
但你返回
" Short And Stout "
在字符串前后有空格。您可以通过将txt
初始化为空字符串而不是空格来修复此问题,然后在循环结束后修剪最后一个空格,或者仅在您不在arr
的最后一个元素。那就是:
var txt = "";
for(var i=0; i < arr.length; i++) {
txt += arr[i][0].toUpperCase() + arr[i].slice(1);
if (i != arr.length - 1) txt += " ";
}
答案 2 :(得分:0)
您可以使用正则表达式。
function titleCase(txt){
return txt.toLowerCase().replace(/\b\w/g, function(m){return m.toUpperCase();});
}
console.log(titleCase("sHoRt AnD sToUt"));//"Short And Stout"
一些解释。
//
正则表达式(RegEx),g
表示全局(否则仅限第一个)
\b
字边界
\w
任何单词符号a-z(加_)
m
(函数参数)在字符串