给定像Marty Mcfly
这样的字符串,是否存在正则表达式或其他单行解决方案以大写'f',所以我得到Marty McFly
吗?
我总是可以指望姓氏和名字之间的空格,并且姓氏的首字母(即M)将始终为大写。
我对几乎所有的javascript,jquery,regex解决方案都持开放态度,我只需要它简短有趣即可。
我有一个使用indexOf和substring将字符串分开的方法,但我希望有一个正则表达式或类似的东西。
最佳答案
您可以利用String.replace
的形式,该形式将函数作为第二个参数:
function fixMarty(s) {
return (""+s).replace(/Mc(.)/g, function(m, m1) {
return 'Mc' + m1.toUpperCase();
});
}
fixMarty('Marty Mcfly'); // => "Marty McFly"
fixMarty("Mcdonald's"); // => "McDonald's"