vscode 片段转换文件名正则表达式
vscode snippet transform file name regex
我正在尝试在片段中将 file-name.dto.ts
转换为 FileName
。
${TM_FILENAME_BASE/^(.*)([^.*]).*/${1:/pascalcase}/}
但是,我不太确定如何转换第二个或第三个捕获组。
如果我们没有用括号括起来,是否意味着我们没有捕获?
export class ${TM_FILENAME_BASE/^(.)([^.]*).*/${1:/upcase}/}Input {},
export class ${TM_FILENAME_BASE/^(.*).*/${1:/pascalcase}/}Output {},
对于第一行(输入行),试试这个:
"export class ${TM_FILENAME_BASE/^([^-]*)-([^.]*).*/${1:/pascalcase}${2:/pascalcase}/}Input {},"
${TM_FILENAME_BASE}
一个人就能file-name.dto
捕获组 1 ^([^-]*)
获取第一个 -
之前的部分
匹配 -
但您将在输出中忽略它,因此它不需要在捕获组中。
捕获组 2 ([^.]*)
在 -
之后直到第一个 .
其余的 .*
将匹配 .dto
,这将再次被忽略,因此它不需要是捕获组,但必须匹配 - 您将有效地替换什么都没有。
替换为转换:${1:/pascalcase}${2:/pascalcase}
因此两个捕获组的第一个字母将大写,其余小写。
在 Output
行中,如果您要查找此结果:
export class FileNameOutput {}
使用
"export class ${TM_FILENAME_BASE/^([^-]*)-([^.]*).*/${1:/pascalcase}${2:/pascalcase}/}Output {},"
以防万一你没有意识到,在你的代码中:
export class ${TM_FILENAME_BASE/^(.)([^.]*).*/${1:/upcase}/}Input {},
最后一个 {}
不是指任何捕获组 - 它在任何转换之外。它只是指一个制表位——你的光标将去的地方。让我知道您是否打算最终 {}
实际上是一个转换后的捕获组。
我正在尝试在片段中将 file-name.dto.ts
转换为 FileName
。
${TM_FILENAME_BASE/^(.*)([^.*]).*/${1:/pascalcase}/}
但是,我不太确定如何转换第二个或第三个捕获组。
如果我们没有用括号括起来,是否意味着我们没有捕获?
export class ${TM_FILENAME_BASE/^(.)([^.]*).*/${1:/upcase}/}Input {},
export class ${TM_FILENAME_BASE/^(.*).*/${1:/pascalcase}/}Output {},
对于第一行(输入行),试试这个:
"export class ${TM_FILENAME_BASE/^([^-]*)-([^.]*).*/${1:/pascalcase}${2:/pascalcase}/}Input {},"
${TM_FILENAME_BASE}
一个人就能file-name.dto
捕获组 1
之前的部分^([^-]*)
获取第一个-
匹配
-
但您将在输出中忽略它,因此它不需要在捕获组中。捕获组 2
([^.]*)
在-
之后直到第一个.
其余的
.*
将匹配.dto
,这将再次被忽略,因此它不需要是捕获组,但必须匹配 - 您将有效地替换什么都没有。
替换为转换:${1:/pascalcase}${2:/pascalcase}
因此两个捕获组的第一个字母将大写,其余小写。
在 Output
行中,如果您要查找此结果:
export class FileNameOutput {}
使用
"export class ${TM_FILENAME_BASE/^([^-]*)-([^.]*).*/${1:/pascalcase}${2:/pascalcase}/}Output {},"
以防万一你没有意识到,在你的代码中:
export class ${TM_FILENAME_BASE/^(.)([^.]*).*/${1:/upcase}/}Input {},
最后一个 {}
不是指任何捕获组 - 它在任何转换之外。它只是指一个制表位——你的光标将去的地方。让我知道您是否打算最终 {}
实际上是一个转换后的捕获组。