2016-03-30 42 views
-1

下面的代码不起作用为什么?任务是将每个单词的第一个字母变成大写(Javascript)

function titleCase(str){ 
    var newStr = str.split(" "); //split string turn it into seperated words[] 
    var resutl; 

    for(vari=0; i < newStr.length; i++){ //iterate all words 
     var result = newStr[i].charAt(0).toUpperCase + 

     // find first letter and turn it into capital 
     newStr[i].subString(1).toLowerCase(); 
    } 
    return result.join(" "); 
} 
+1

vari = 0空格丢失,应该是var i = 0,也是正确的变量'result'的拼写并在循环之外初始化一次 –

+0

有关调试的问题需要具体描述你看到的行为以及你想要什么相反,不仅仅是“此代码不起作用”消息 –

回答

0

结果你的代码是一个字符串,而不是一个数组。你不能加入一个字符串。

循环的每次迭代都要用新单词替换变量结果。您需要初始化一个结果数组[]并将每个结果推送到数组上,然后在循环完成后加入数组。

0

爆炸对空间的字符串,并与下面的功能迭代它:

function ucfirst(str) { 
    str += ''; // make sure str is really a string 
    var f = str.charAt(0).toUpperCase(); 
    return f + str.substr(1); 
} 
+1

'str + ='';'做什么? – martijnn2008

+0

俗气的方式,以确保它被转换为一个字符串:) – Garytje

+0

感谢您的编辑建议! – Garytje

0

result需求是一个数组,你也有一些拼写错误在你的代码,例如缺少()

function titleCase(str) { 
 
    var newStr = str.split(" "); 
 
    var result = []; 
 
    for (var i = 0; i < newStr.length; i++) { 
 
     result.push(newStr[i].charAt(0).toUpperCase() + newStr[i].substring(1).toLowerCase()); 
 
    } 
 
    return result.join(' '); 
 
} 
 

 

 
var str = 'hELLO wORLD'; 
 

 
document.write(titleCase(str));

0

你可以试试这个:

function titleCase(str){ 
var newStr = str.split(" "); 

var result = []; 

for(var i=0; i < newStr.length; i++){ 
    result.push(newStr[i].charAt(0).toUpperCase() + 
    newStr[i].substring(1).toLowerCase()); 

} 

    return result.join(' '); 

} 

另一种方法:

function titleCase(str){ 
    var words = str.split(" "); 

return words.map(function(word){ 
    return word.charAt(0).toUpperCase() + word.substring(1).toLowerCase(); 
    }).join(" "); 
} 
0

尝试使用正则表达式

var data = "The mission is to turn each word's first letter into capital"; 
data = data.replace(/ (.)/g,function(w){return w.toUpperCase()}); 

缺点:这不会大写第一个字符。

相关问题