JavaScript titleCase函数

时间:2015-11-17 21:05:05

标签: javascript string

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;我的名字是尼科斯

我无法理解为什么上面的代码不起作用...... :(

6 个答案:

答案 0 :(得分:3)

你需要为你的字符串做一个赋值,所以第一个大写字母然后字符串的其余部分作为小写:

strAr[i] = strAr[i].charAt(0).toUpperCase() + strAr[i].substring(1).toLowerCase();   

注意,值strAr[i].charAt(0).toUpperCase()只会将第一个字符作为大写字母返回,它实际上不会以任何方式更改字符串。

Here is a simple example

答案 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(这就是你需要分配它的原因)。您可以将代码简化为以下内容:

Example Here

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.

作为您所写内容的替代方案,您还可以使用以下内容:

Example Here

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.

非常容易理解并贯彻......