VSCode Code-Snippets transform: downcase and capitalize at the same time
Asked Answered
C

2

5

I have this:

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

How to make use downcase and capitalize on the same (2) group?

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

I want to tansform ZXC_ASD to zxcAsd.

Cortes answered 10/7, 2018 at 19:43 Comment(0)
L
6

Try it like this:

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

enter image description here

Basically, I've changed the second capture group ([A-Z]+)* to a non-capture group that has two inner capture groups (?:([A-Z])([A-Z]+))*, a single letter for camel-case and the rest, which I refer in the replace/transform part: /downcase}${2:/capitalize}${3:/downcase}/

Lennox answered 10/7, 2018 at 21:16 Comment(0)
G
2

Apparently coming to vscode v1.58 is a /camelcase modifier. So your case is as easy as

"${1/(.*)/${1:/camelcase}/}"

camelCase transform example

Tested in the Insiders Build. See Add a camelCase transform for Snippet variables. See also https://mcmap.net/q/391816/-snippet-regex-match-arbitrary-number-of-groups-and-transform-to-camelcase for another example.


Old answer:

Using the undocumented (see Snippet regex: match arbitrary number of groups and transform to CamelCase) /pascalcase transform, it is quite easy:

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

as the /pascalcase will do both the /capitalize and the /downcase at once.

Grandsire answered 29/12, 2019 at 13:48 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.