我没有在Java Script中完成这项任务

时间:2016-08-03 18:23:08

标签: javascript

请帮帮我。我正在做运动,如果所有条件都执行,我就不会理解我做错了什么。任务包括返回提供的字符串,其中只有每个单词的首字母大写。我的代码执行这个条件,但它并没有让我领先。

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");

3 个答案:

答案 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(函数参数)在字符串

中匹配