我试图在TypeScript中制作一个管道,可以将PascalCase字符串拆分开来,但如果它也能拆分数字就更好了。我还希望它能在连续大写字母处拆分。我有这个管道,在Chrome中工作得很好,但在Firefox中不起作用,显然只有Chrome支持回溯。如何在没有回溯的情况下完成这项任务?
transform(value: string): string {
let extracted = '';
if (!value) {
return extracted;
}
const regExSplit = value
.split(new RegExp('(?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|(?<=[0-9])(?=[A-Z][a-z])|(?<=[a-zA-Z])(?=[0-9])'));
for (let i = 0; i < regExSplit.length; i++) {
if (i !== regExSplit.length - 1) {
extracted += `${regExSplit[i]} `;
} else {
extracted += regExSplit[i];
}
}
return extracted;
}
比如说一个字符串 ANet15Amount
,应该被转换成 A Net 15 Amount
。上面的正则表达式也可以分割camelCase字符串,但这不是必须考虑的。
.replace(/([A-Z]|\d+)/g, " $1").trim();
- ibrahim mahrir(?!^)([A-Z]|\d+)
避免第一个空格并且不需要修剪。 - ctwheels