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
сразу.