Я пытался создать в машинописи канал, который бы разбивал строку 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, но это не обязательно учитывать.
javascript
regex
typescript
develmatik
источник
источник
.replace(/([A-Z]|\d+)/g, " $1").trim();
(?!^)([A-Z]|\d+)
избегает первого пробела и не нуждается в обрезке.Ответы:
Как насчет сопоставления по более простой схеме, подобной этой, и соединения с пробелом.
Сначала я думал , что просто ,
[A-Z][a-z]*|\d+
но это сломать бы , например ,ABCDefg123
вA B C Defg 123
который будет отличаться рабочей для текущей функции, что преобразования вABC Defg 123
.Есть еще небольшая разница. С уважением прообразы
A1B2
кA 1B 2
и это один кA 1 B 2
где я думаю , что это можно было бы быть более точным, не так.источник
Просто замените любую заглавную букву
[A-Z]
или любую последовательность цифр\d+
пробелом плюс то, что мы только что сопоставили" $1"
. Мы пропускаем первую букву, чтобы в начале результирующей строки не было добавлено пробела, добавив в начало строки отрицательный прогноз(?!^)
:Пример:
Показать фрагмент кода
источник
Пытаться
[A-Z]?[a-z]+|[A-Z]|[0-9]+
Тест в генераторе: https://regex101.com/r/uBO0P5/1
источник
Я предполагаю, что это зависит от соглашений строки, которые могут увеличить сложность
источник