为了账号安全,请及时绑定邮箱和手机立即绑定

将任何字符串转换为驼峰式大小写

将任何字符串转换为驼峰式大小写

Helenr 2019-11-11 14:08:21
如何使用javascript正则表达式将字符串转换为驼峰式?EquipmentClass name或 Equipment className或equipment class name或Equipment Class Name应该全部变成:equipmentClassName。
查看完整描述

3 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

查看您的代码,只需两个replace调用即可实现:


function camelize(str) {

  return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function(word, index) {

    return index == 0 ? word.toLowerCase() : word.toUpperCase();

  }).replace(/\s+/g, '');

}


camelize("EquipmentClass name");

camelize("Equipment className");

camelize("equipment class name");

camelize("Equipment Class Name");

// all output "equipmentClassName"

编辑:或只需单击一次replace,即可在中捕获空白RegExp。


function camelize(str) {

  return str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) {

    if (+match === 0) return ""; // or if (/\s+/.test(match)) for white spaces

    return index == 0 ? match.toLowerCase() : match.toUpperCase();

  });

}


查看完整回答
反对 回复 2019-11-11
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

如果有人在使用lodash,则有一个_.camelCase()功能。


_.camelCase('Foo Bar');

// → 'fooBar'


_.camelCase('--foo-bar--');

// → 'fooBar'


_.camelCase('__FOO_BAR__');

// → 'fooBar'


查看完整回答
反对 回复 2019-11-11
?
呼如林

TA贡献1798条经验 获得超3个赞

我刚结束这样做:


String.prototype.toCamelCase = function(str) {

    return str

        .replace(/\s(.)/g, function($1) { return $1.toUpperCase(); })

        .replace(/\s/g, '')

        .replace(/^(.)/, function($1) { return $1.toLowerCase(); });

}

我试图避免将多个replace语句链接在一起。在我的函数中有$ 1,$ 2,$ 3的东西。但是这种类型的分组很难理解,而您对跨浏览器问题的提及也是我从未想过的。


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 1254 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信