【发布时间】:2020-03-10 16:30:39
【问题描述】:
我试图在打字稿中制作一个可以拆分 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。上面的这个正则表达式也会拆分一个驼峰式字符串,但这没有必要考虑。
【问题讨论】:
-
.replace(/([A-Z]|\d+)/g, " $1").trim(); -
@ibrahimmahrir
(?!^)([A-Z]|\d+)避免了第一个空格并且不需要修剪。
标签: javascript regex typescript