我正在开发一个程序,它接受一个字符串,拆分它,返回第一个字符串,只有第一个字母大写,并返回第二个字符串,所有字母都大写。代码如下:
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行,但我不知道为什么。
答案 0 :(得分:2)
您获得的当前错误是因为您的firstName
变量包含数组而不是字符串。您可以通过更改此
var firstName = splitNames;
......对此:
var firstName = splitNames.pop();
但是,您应该添加一些检查,而不是仅仅假设传入的名称也将出现在"单词"格式。
答案 1 :(得分:0)
即使您在其上致电pop()
,splitNames
仍然是一个数组,如果您将其分配给firstName
,firstName
将是同一个数组, #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());
}