VSCode 代码片段转换:同时小写和大写

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

我有这个:

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

如何在同一 (2) 个组中使用 downcasecapitalize

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

我想将 ZXC_ASD 转换为 zxcAsd

像这样尝试:

"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]+))* 的非捕获组,单个字母用于驼峰式大小写,其余的,我在 replace/transform 部分提到:/downcase}${2:/capitalize}${3:/downcase}/

显然 vscode v1.58 是一个 /camelcase 修饰符。所以你的情况就像

一样简单
"${1/(.*)/${1:/camelcase}/}"

已在 Insiders Build 中测试。另一个例子见 Add a camelCase transform for Snippet variables. See also 。


旧答案:

使用未记录的(参见Snippet regex: match arbitrary number of groups and transform to CamelCase/pascalcase 转换,非常简单:

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

因为 /pascalcase 会同时执行 /capitalize/downcase