将字符串转换为大写和小写

时间:2015-03-21 15:25:09

标签: javascript string

我正在开发一个程序,它接受一个字符串,拆分它,返回第一个字符串,只有第一个字母大写,并返回第二个字符串,所有字母都大写。代码如下:

var name = "ThEoDORe RoOseVElT";

function nameChanger(oldName) {
    var finalName = oldName;

    var splitNames = finalName.split(" ");

    var secondName = splitNames.pop();
    var firstName = splitNames;

    var secondName2 = secondName.toUpperCase();
    var firstName2 = firstName.toLowerCase();

    var finalName = firstName + " " + secondName;

    return finalName; };

给出状态'Uncaught'和'TypeError:undefined不是函数'的错误。我知道我的问题是使用toUpperCase()和toLowerCase()方法的第11行和第12行,但我不知道为什么。

4 个答案:

答案 0 :(得分:2)

您获得的当前错误是因为您的firstName变量包含数组而不是字符串。您可以通过更改此

来解决此问题
var firstName = splitNames;

......对此:

var firstName = splitNames.pop();

但是,您应该添加一些检查,而不是仅仅假设传入的名称也将出现在"单词"格式。

答案 1 :(得分:0)

即使您在其上致电pop()splitNames仍然是一个数组,如果您将其分配给firstNamefirstName将是同一个数组, #39; t采用toLowerCase()方法。

尝试:

var secondName = splitNames.pop();
var firstName = splitNames.pop();

var secondName2 = secondName.toUpperCase();
var firstName2 = firstName.toLowerCase();

答案 2 :(得分:0)

当您将splitNames分配给firstName时,您将为firstName分配一个数组,而数组不具有小写或大写方法。

var firstName = splitNames.pop()

另外,如果您已经声明了变量,则不需要重复使用var,并且忘记在倒数第二行添加新名称:

finalName = firstName2 + secondName2;

答案 3 :(得分:0)

function titleCase(str) {
 return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase());
}