function titleCase(str) {
str.toLowerCase();
var strAr = str.split(" ");
for (var i = 0; i < strAr.length; i++) {
strAr[i].charAt(0).toUpperCase();
}
str = strAr.join(" ");
return str;
}
titleCase("I'm a little tea pot");
我正在尝试创建一个函数,该函数接受一个字符串并返回一个字符串,其中包含一个单词的所有第一个后置字符,大写字母为
例如:我的名字是nikos - &gt;我的名字是尼科斯
我无法理解为什么上面的代码不起作用...... :(
答案 0 :(得分:3)
你需要为你的字符串做一个赋值,所以第一个大写字母然后字符串的其余部分作为小写:
strAr[i] = strAr[i].charAt(0).toUpperCase() + strAr[i].substring(1).toLowerCase();
注意,值strAr[i].charAt(0).toUpperCase()
只会将第一个字符作为大写字母返回,它实际上不会以任何方式更改字符串。
答案 1 :(得分:2)
在for循环中,您需要在循环中指定一个值,如下所示:
strAr[i] = strAr[i].charAt(0).toUpperCase();
另一种(稍微有点组织)的方式:我们将创建一个函数来获取一个单词并将其大写,然后我们将创建一个函数,它接受一个字符串,将它分割在一个空格中,将每个单词大写并重新加入返回字符串。使用titleCase('hi there')
function capitalize(str) {
if(str.length == 0) return str;
return str[0].toUpperCase() + str.substr(1);
}
function titleCase(str) {
return str.split(' ').map(capitalize).join(' ');
}
答案 2 :(得分:2)
扩展String类:
将每个单词替换为自己的toUpperCase&lt; d;版本。
String.prototype.capitalize = function() {
return this.replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); });
};
console.log("jose maria gonzales".capitalize());
// Jose Maria Gonzales
答案 3 :(得分:2)
它无法正常工作,因为您仍然需要分配strAr[i].charAt(0).toUpperCase()
的结果:
strAr[i] = strAr[i].charAt(0).toUpperCase() + strAr[i].slice(1);
值得指出.toUpperCase()
/ .toLowerCase()
方法do not mutate/alter the value of the string(这就是你需要分配它的原因)。您可以将代码简化为以下内容:
function titleCase(str) {
var strAr = str.toLowerCase().split(' ');
for (var i = 0; i < strAr.length; i++) {
strAr[i] = strAr[i].charAt(0).toUpperCase() + strAr[i].slice(1);
}
return strAr.join(' ');
}
console.log(titleCase('This is a simple test.'));
// This Is A Simple Test.
作为您所写内容的替代方案,您还可以使用以下内容:
function titleCase (str) {
return str.toLowerCase().replace(/(^|\s)(\w)/g, function(x) {
return x.toUpperCase();
});
}
console.log(titleCase('This is a simple test.'));
// This Is A Simple Test.
它会将整个输入字符串转换为小写,然后将所有字符大写成后空格(基于匹配)。
答案 4 :(得分:0)
使用以下代码获取ucword
function titleCase(str) {
return (str + '')
.replace(/^([a-z\u00E0-\u00FC])|\s+([a-z\u00E0-\u00FC])/g, function($1) {
return $1.toUpperCase();
});
}
var data = titleCase("I'm a little tea pot");
document.write(data);
答案 5 :(得分:0)
function titleCase(str) {
str = str.split(' ');
var title ="";
var result = [];
for(var i = 0; i < str.length; i++){
title = str[i].toLowerCase();
result.push(title[0].toUpperCase()+title.slice(1));
}
return result.join(' ');
}
console.log(titleCase('This is a simple test.'));
// This Is A Simple Test.
非常容易理解并贯彻......