我试图创建一个函数,将我的字符串的第一个字母更改为大写字母,将其余字母更改为小写字母。我编写了以下代码,但在编译时没有更改字符串。我不知道我在这里做错了什么。有什么指针吗?!
var e1;
function capFirstLetter(myString) {
myString = (myString.substring(0,1)).toUpperCase();
myString = (myString.substring(1, myString.length)).toLowerCase();
return myString;
}
e1 = prompt("Please Enter Your First Name");
capFirstLetter(e1);
console.log("The result is: " + e1);

答案 0 :(得分:1)
我很惊讶这些答案都没有使用.charAt(0)
和.slice(1)
。它更干净,并且需要更少的代码来完成OP所追求的目标。
var e1;
function capFirstLetter(myString) {
return myString.charAt(0).toUpperCase() + myString.slice(1).toLowerCase();
}
e1 = prompt("Please Enter Your First Name");
e1 = capFirstLetter(e1);
console.log("The result is: " + e1);
答案 1 :(得分:-1)
这里有一些错误。 将原始变量输入函数(即非对象)时,将复制变量而不是直接移动变量。这意味着函数内部的字符串myString与函数外部的字符串完全不同,并且更改不会反映在外部字符串中。
其次,你用第一个字符(大写)覆盖所述字符串,然后用剩余的字符再次覆盖它,这些字符不再存在!结果是你的函数返回空字符串""。
最后,你从函数中返回这个空字符串,但不要对它做任何事情。
可能你正试图这样做:
var e1;
function capFirstLetter(myString) {
first = (myString.substring(0,1)).toUpperCase();
rest = (myString.substring(1, myString.length)).toLowerCase();
return first + rest;
}
e1 = prompt("Please Enter Your First Name");
e1 = capFirstLetter(e1);
console.log("The result is: " + e1);

答案 2 :(得分:-1)
capFirstLetter(el)
返回一个值。您正在调用该函数,但不捕获该返回值,而只是记录propmt
的原始响应。
此外,除了函数中的第一个字母外,您将丢弃所有函数,因为您只需使用第一个字母立即覆盖输入参数。您需要第二个变量来存储它。
见内联评论:
var e1 = prompt("Please Enter Your First Name");
function capFirstLetter(myString) {
// This only returns the first letter of the string.
// So, you don't want to overwrite the input because you'll lose the rest of the word
var newString = myString.substring(0,1).toUpperCase();
// Now, you have to concatenate the first letter (from above) with the rest
myString = newString + myString.substring(1, myString.length).toLowerCase();
return myString;
}
var result = capFirstLetter(e1); // Capture the function's return value
console.log("The result is: " + result);