问题描述
我正在尝试将“file-name.dto.ts”转换为“FileName”
${TM_FILENAME_BASE/^(.*)([^.*]).*/${1:/pascalcase}$2/}
但是,我不太确定如何转换第二个或第三个捕获组。
如果我们不用括号括起来,是否意味着我们不捕获?
export class ${TM_FILENAME_BASE/^(.)([^.]*).*/${1:/upcase}$2/}Input {$2},export class ${TM_FILENAME_BASE/^(.*).*/${1:/pascalcase}$2/}Output {},
解决方法
对于第一行(输入行),试试这个:
"export class ${TM_FILENAME_BASE/^([^-]*)-([^.]*).*/${1:/pascalcase}${2:/pascalcase}/}Input {$2},"
-
${TM_FILENAME_BASE}
独自让您file-name.dto
-
Capture group 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}$2/}Input {$2},
最后一个 {$2}
不是指任何捕获组 - 它在任何转换之外。它仅指一个制表位 - 光标所在的位置。让我知道您是否打算将最终的 {$2}
变成一个转换后的捕获组。