将任何字符串转换为骆驼盒

2022-08-30 00:27:32

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

EquipmentClass name或 或 或 或Equipment classNameequipment class nameEquipment Class Name

应该都变成:.equipmentClassName


答案 1

查看您的代码,您只需两个调用即可实现它: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"

编辑:或者通过一次调用,捕获空白也在 .replaceRegExp

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();
  });
}

答案 2

如果有人使用lodash,有一个_.camelCase()函数。

_.camelCase('Foo Bar');
// → 'fooBar'

_.camelCase('--foo-bar--');
// → 'fooBar'

_.camelCase('__FOO_BAR__');
// → 'fooBar'