创建VSCode代码段时,如何将变量转换为标题大小写(如TitleCase)?

时间:2018-10-18 13:16:17

标签: visual-studio-code code-snippets

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

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

我的文件名非常类似于类名:

foo-bar.ts代表class FooBar

这是我当前的代码段,其中我可以使用VSCode提供的本机“大写”语法将"foo-bar"转换为"Foo-bar"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”。

2 个答案:

答案 0 :(得分:4)

尝试一下:

  "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});",
      "}",
      "",
      "$0"
    ],
    "description": "Creates a function wrapper for a model's attribute."
  }

如果文件的长度为两个或多个段,例如foo-bar.ts或foo-bar-zoo.ts等,则可以使用

另请参阅snippet transform to CamelCase

答案 1 :(得分:0)

以其他示例补充Mark的出色答案可能会有用。

在我的情况下,我想取一个名称-作为选定的文本-并将其转换为Swift代码,以实例化一个新类,并传入变量名称和电子邮件地址。

例如,我选择John Smith作为名字,姓氏并转换为:

let johnSmith = User(name: "John Smith", email: "john.smith@foorbar.com")

此代码段如下:

"User": {
        "prefix": "u",
        "body": [
            "\tlet ${TM_SELECTED_TEXT/([a-zA-Z]*) *([a-zA-Z]*)/${1:/downcase}$2/} = User(name: \"${TM_SELECTED_TEXT}\", email: \"${TM_SELECTED_TEXT/([a-zA-Z]*) *([a-zA-Z]*)/${1:/downcase}.${2:/downcase}/}@foobar.com\")\n",
        ],
        "description": "Create User with name and email"
    }