首页 > 解决方案 > 创建 VSCode 片段时,如何将变量转换为标题大小写(如 TitleCase)?

问题描述

https://code.visualstudio.com/docs/editor/userdefinedsnippets#_placeholdertransform

我的目标是在插入的片段的上下文中自动设置类名。VSCode 本身不支持类或方法名,但它支持文件名。

我的文件名与类名非常相似:

foo-bar.tsclass FooBar.

这是我当前的代码片段,其中我可以转换"foo-bar""Foo-bar"使用 VSCode 提供的本机“大写”语法。 TM_FILENAME_BASE是一个本机变量,它提取不带扩展名的文件名:

"My Snippet": {
    "scope": "typescript",
    "prefix": "snippet",
    "body": [
        "${1}() {",
        "\treturn this.get(${TM_FILENAME_BASE/(.*)/${1:/capitalize}/}.FIELD.${3});",
        "}",
        "",
        "$0"
    ],
    "description": "Creates a function wrapper for a model's attribute."
}

我想将“foo-bar”转换为“FooBar”。

标签: visual-studio-codecode-snippetsvscode-snippets

解决方案


试试这个:

  "My Snippet": {
    "scope": "typescript",
    "prefix": "snippet",
    "body": [
      "${1}() {",

      // "\treturn this.get(${TM_FILENAME_BASE/([a-z]*)-*([a-z]*)/${1:/capitalize}${2:/capitalize}/g}.FIELD.${3});",

      "\treturn this.get(${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}.FIELD.${3});",

      "}",
      "",
      "$0"
    ],
    "description": "Creates a function wrapper for a model's attribute."
  }

编辑:2018 年 10 月,\pascalcase转换已添加到 vscode - 请参阅 commit,但尚未添加到文档中(截至本次编辑之日)。我在上面添加了更简单的转换,它完成了 PascalCase 转换。

添加了演示,在第一个文件名大小写 ( ) 之后使用剪贴板test-bed-snippets.xxx只是为了使各种可能性易于演示。

pascalCase 片段演示

另请参阅对 CamelCase 的片段转换


推荐阅读