我有此功能将字符串转换为标题大小写,

export function toTitleCase(text) {
  const result = text.replace(/([A-Z])/g, ' $1');
  return result.charAt(0).toUpperCase() + result.slice(1);
}


使用camelCase的结果是Camel Case。
结果是正确的。

使用camel23Case的结果是Camel23 Case。
我希望结果是Camel 23 Case

使用camelCASE的结果是Camel C A SE。
我希望结果是Camel CASE。

最佳答案

查找大写字母或数字的序列,并在其前添加一个空格。然后将第一个小写字母替换为大写字母:



const toTitleCase = (text) => text
  .replace(/([A-Z]+|[0-9]+)/g, ' $1')
  .replace(/\b([a-z])/g, (m) => m.toUpperCase());

console.log(toTitleCase('camelCase'));
console.log(toTitleCase('camel23Case'));
console.log(toTitleCase('camelCASE'));

09-25 17:32