我的挑战是在保证所有其他字母小写的情况下,将字符串中每个单词的首字母大写。我为此花费了比我愿意承认的更多时间,并且我的代码如下所示。它只有一个缺陷,就是会将“我是”这样的缩写词返回为“I'M”。由于某种原因,它将缩写词视为两个单独的单词。我通过在将首字母大写的步骤后立即放置console.log进行测试(我已在示例中注释掉了它)。它返回在同一步骤中同时将“I”和“M”变成大写。如何使其仅更改“我”的字母大小写呢?
function titleCase(str) {
str = str.toLowerCase(); //make everything lowercase
str = str.split(" "); //make the string to array
for(i = 0; i < str.length; i++){
var strItem = str[i]; //take item in array
strItem = strItem.replace(/\b./g, function(m){ return m.toUpperCase(); }); //capitalize it
//console.log(strItem);
str[i] = strItem; //put changed item back into array
}
str = str.join(" "); //turn array back into string
return str;
}
titleCase("I'm a little tea pot");
感谢您的时间。