Eu estava tentando fazer um pipe no texto datilografado que dividisse uma string PascalCase, mas seria bom se isso também fosse dividido em dígitos. Eu também gostaria que fosse dividido em maiúsculas consecutivas. Eu tenho esse pipe, que funciona muito bem, exceto que funciona apenas no Chrome e não no Firefox, evidentemente, apenas o Chrome oferece suporte ao visual. Como conseguir isso sem olhar para trás?
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;
}
Por exemplo, uma string ANet15Amount
deve ser transformada em A Net 15 Amount
. Esse regex acima também dividiria uma string camelCase, mas isso não é necessário considerar.
javascript
regex
typescript
develmatik
fonte
fonte
.replace(/([A-Z]|\d+)/g, " $1").trim();
(?!^)([A-Z]|\d+)
evita o primeiro espaço e não precisa de corte.Respostas:
Que tal corresponder por um padrão mais básico como esse e juntar - se ao espaço.
Primeiro pensei em simplesmente,
[A-Z][a-z]*|\d+
mas isso iria entrar, por exemplo,ABCDefg123
noA B C Defg 123
qual seria diferente trabalhar para sua função atual, que se transforma emABC Defg 123
.Ainda há uma pequena diferença. Teus transforma
A1B2
aA 1B 2
e esta paraA 1 B 2
onde eu acho que este seria mais preciso, não é.fonte
Basta substituir qualquer letra maiúscula
[A-Z]
ou qualquer sequência de dígitos\d+
por um espaço mais o que acabamos de corresponder" $1"
. Ignoramos a primeira letra para que nenhum espaço seja adicionado no início da string resultante, adicionando um lookahead negativo no início da string(?!^)
:Exemplo:
Mostrar snippet de código
fonte
Tentar
[A-Z]?[a-z]+|[A-Z]|[0-9]+
Teste no gerador: https://regex101.com/r/uBO0P5/1
fonte
Eu acho que depende das convenções da string que podem aumentar a complexidade
fonte