我试图只删除每个单词大写的第一个字母,同时删除句子开头和结尾的任何空格。
“红地毯奠定了我的作用” - > “以前放置了一块红地毯 我“
我可以使用regExp,但我不太熟悉它(建议非常受欢迎)。我这样做的方法是链接多个高阶函数,这对于给定的任务来说似乎过于复杂。我希望有任何其他方法来解决它。
//this function removes the whitespaces at the extreme ends of passed string
function removeOuterSpace(strArg) {
return strArg.replace(/^\s*|\s*$/g, '')
}
// this function takes the actual string and does the rest
function firstUCase(str) {
var newStr = (removeOuterSpace(str).split(' ')
.map(function(items) {
return items[0].toUpperCase() + items.slice(1, items.length)
})).join(' ')
return newStr
}
firstUCase(' the quIck brown fox jumps ')
编辑:结果出现:“QuIck Brown Fox跳跃”
答案 0 :(得分:2)
你可以试试这个:
function firstUCase(str) {
var newStr = (str.trim().split(' ')
.map(function(items) {
return items[0].toUpperCase() + items.slice(1, items.length).toLowerCase();
})).join(' ')
return newStr
}
firstUCase(' the quIck brown fox jumps ') //The Quick Brown Fox Jumps
firstUCase(' a red carpet Is laid beFOre me ') // A Red Carpet Is Laid Before Me
Javascript已经有一个名为.trim
的内置函数(来自文档):
(...)从字符串的两端删除空格。这个空白 context是所有空格字符(空格,制表符,不间断空格, 等)和所有行终止符(LF,CR等)。
此外,您应该在切片部分的末尾添加.toLowerCase()
以使字符串的其余部分倒圆。
或者,如果你想使用正则表达式,你可以尝试这样的事情:
function firstUCase(str) {
return str
.trim()
.replace(/\b(\w)(\w*)/g, (word,letter,rest) => letter.toUpperCase() + rest.toLowerCase() )
}
firstUCase(' the quIck brown fox jumps ') //The Quick Brown Fox Jumps
firstUCase(' a red carpet Is laid beFOre me ') // A Red Carpet Is Laid Before Me
上面,.replace
方法接受一个函数作为第二个参数(docs here),可用于替换捕获的组(第一组=第一个字母,第二组=句子的其余部分)分别为toUpperCase()
和toLowerCase()
。你可以在这里玩它:http://regexr.com/3f4bg
答案 1 :(得分:0)
使用String.prototype.replace
函数的简短解决方案:
function firstUCase(str) {
return str.trim().replace(/\b\w+\b/g, function (m) {
return m[0].toUpperCase() + m.slice(1).toLowerCase();
});
}
console.log(firstUCase(" a red carpet Is laid beFOre me "));
答案 2 :(得分:0)
确实有更简单的方法。首先,String.prototype.trim()
删除空格,然后如您所想,有一种方法可以使用正则表达式来实现更简单的过程:
function replacer(str){
return str.toUpperCase();
}
function firstUCase(str) {
var newStr = str.trim().toLowerCase();//remove spaces and get everything to lower case
return newStr.replace(/\b\w/g, replacer);
}
console.log(firstUCase(' the quIck brown fox jumps '));

答案 3 :(得分:0)
这是一个基于正则表达式的解决方案:
function replacer(match) {
return match.charAt(0).toUpperCase() + match.slice(1);
}
function formatString(str) {
return str
.trim()
.toLowerCase()
.replace(/\b([a-z])/g, replacer);
}
console.log(formatString(" a red carpet Is laid beFOre me "));