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

新手上路,请多包涵

如何使用 javascript 正则表达式将字符串转换为驼峰式大小写?

EquipmentClass name

Equipment className 类名或设备 equipment class nameEquipment Class Name

都应该变成: equipmentClassName

原文由 Scott Klarenbach 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

我刚结束这样做:

 String.prototype.toCamelCase = function(str) {
 return str
 .replace(/\s(.)/g, function($1) { return $1.toUpperCase(); })
 .replace(/\s/g, '')
 .replace(/^(.)/, function($1) { return $1.toLowerCase(); });
 }

我试图避免将多个替换语句链接在一起。我的函数中有 1 美元、2 美元、3 美元的东西。但是这种类型的分组很难理解,你提到的跨浏览器问题也是我从未想过的。

原文由 Scott Klarenbach 发布,翻译遵循 CC BY-SA 2.5 许可协议

查看您的代码,您只需两次 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();
  });
}

原文由 Christian C. Salvadó 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题