我有这个函数将字符串转换为标题大小写
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案例 我希望结果是Camel 23 Case
使用camelCASE,结果是Camel C A S E. 我希望结果是Camel CASE。
答案 0 :(得分:2)
查找大写字母或数字的序列,并在它们之前添加空格。然后用大写版本替换第一个小写字母:
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'));
答案 1 :(得分:1)
试试这个正则表达式 - /((?<=[a-z])[0-9A-Z])|(?<=[a-z0-9])[A-Z]/g
function toTitleCase(text) {
var regex = /((?<=[a-z])[0-9A-Z])|(?<=[a-z0-9])[A-Z]/g;
const result = text.replace( regex, function(m){ return " " + m });
return result.charAt(0).toUpperCase() + result.slice(1);
}
<强>演示强>
function toTitleCase(text) {
var regex = /((?<=[a-z])[0-9A-Z])|(?<=[a-z0-9])[A-Z]/g;
const result = text.replace(regex, function(m) {
return " " + m
});
return result.charAt(0).toUpperCase() + result.slice(1);
}
console.log(toTitleCase("camel23Case"));
console.log(toTitleCase("camel23CASE"));
<强>解释强>
((?<=[a-z])[0-9A-Z])
匹配以下大写字母或字符(如果前一个字符是小写字母
(?<=[a-z0-9])[A-Z]
仅匹配字母。