给定像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"

07-28 05:35