【问题标题】:JavaScript: string Manipulation [duplicate]JavaScript:字符串操作[重复]
【发布时间】:2015-03-06 00:01:38
【问题描述】:
我很难将一些方法链接在一起。你能提供一些帮助吗?
最终结果应该是 = 米老鼠
var name = "MicKEy MOUse";
function nameChanger(oldName) {
var finalName = oldName;
var splitString = name.split(' ');
var fname = splitString.slice(0,1);
var fname_lower = fname.toLowerCase.slice(1,6);
return fname_lower;
};
console.log(nameChanger(name));
由于我正在尝试学习函数中的方法,我希望能在这些项目上提供帮助。但是,如果有更多雄辩的方式来执行相同的操作,我也会很感激这种输入。
提前感谢您的知识和指导。
【问题讨论】:
标签:
javascript
arrays
string
【解决方案1】:
-
根据空格字符将名称一分为二
var splitString = oldName.split(' ');
-
将整个第一个字符串转换为小写,将第二个字符串转换为大写。
var fname = splitString[0].toLowerCase();
var lname = splitString[1].toUpperCase();
-
现在,只需从fname 创建一个新字符串,将第一个字符更改为大写,将其与lname 连接并返回,就像这样
return fname[0].toUpperCase() + fname.substring(1) + " " + lname;
所以,你的完整功能应该是这样的
function nameChanger(oldName) {
var splitString = oldName.split(' ');
var fname = splitString[0].toLowerCase();
var lname = splitString[1].toUpperCase();
return fname[0].toUpperCase() + fname.substring(1) + " " + lname;
};
注意:您可能想知道,我们为什么要这样做
fname[0].toUpperCase() + fname.substring(1)
只更改fname 的第一个字符。在 JavaScript 中,字符串是不可变的对象。一旦创建了 String 对象,就永远无法更改它。因此,我们正在创建一个新的 String 对象,基于 fname 修改后的第一个字符和 fname 的其余部分。
【解决方案2】:
var name = "MicKEy MOUse";
function nameChanger(oldName) {
var splitString = name.split(' ');
return splitString[0].charAt(0).toUpperCase()+splitString[0].slice(1).toLowerCase()+' '+splitString[1].toUpperCase();
};
console.log(nameChanger(name));
扩展代码(罗伯特·罗斯曼):
var name = "MicKEy MOUse";
function nameChanger(oldName) {
//Splitting `oldName` to array with words
var splitString = name.split(' ');
//Setting variable which contains first word
var firstWord = splitString[0];
//Setting variable which contains second word
var secondWord = splitString[1];
//Setting variable which contains first letter of first word
var firstWordLetter = firstWord.charAt(0);
//Setting variable which contains first word letters, without first letter
var firstWordRestOfLetters = firstWord.slice(1);
//Result first word (first letter to upper case, rest of letters to lower case)
var resultFirstWord = firstWordLetter.toUpperCase()+firstWordRestOfLetters.toLowerCase();
//Result second word (all second word letters to upper case)
var resultSecondWord = secondWord.toUpperCase();
//Returning string with first and second word separated with space
return resultFirstWord+' '+resultSecondWord;
};