VSCode Code-Snippets transform

У меня есть это:

${1/([A-Z]*)(?:_)([A-Z]+)*/${1:/downcase}${2:/downcase}/g}

Как использовать downcase а также capitalize в той же (2) группе?

${1/([A-Z]*)(?:_)([A-Z]+)*/${1:/downcase}${2:/downcase/capitalize}/g}

Я хочу получить ZXC_ASD > zxcAsd.

1 ответ

Решение

Попробуйте это так:

"camelCaseSnail": {
"scope": "javascript,typescript",
    "prefix": "log",
    "body": "${1/([A-Z]*)(?:_)(?:([A-Z])([A-Z]+))*/${1:/downcase}${2:/capitalize}${3:/downcase}/g}"
}

введите описание изображения здесь

По сути, я изменил вторую группу захвата ([A-Z]+)* в группу без захвата, которая имеет две внутренние группы захвата (?:([A-Z])([A-Z]+))*одна буква для верблюжьего чемодана и остальное, о котором я говорю в части замены / преобразования: /downcase}${2:/capitalize}${3:/downcase}/

Использование недокументированного (см. Регулярное выражение фрагмента: сопоставление произвольного количества групп и преобразование в CamelCase)/pascalcase преобразовать, это довольно просто:

"${1/([A-Z]*)(?:_)([A-Z]+)*/${1:/downcase}${2:/pascalcase}/g}"

как /pascalcase будет делать как /capitalize и /downcase сразу.

Другие вопросы по тегам