【问题标题】:How do I apply a transform to a variable in a snippet in VSCode?如何将转换应用于 VSCode 片段中的变量?
【发布时间】:2019-11-05 22:56:47
【问题描述】:

使用下面的代码,我想将 $2 中的变量转换为小写,但我不能让它工作。

    "Build Model": {
        "prefix": "mod",
        "body": [
            "import '${1:../backend.dart}';",
            "",
            "class ${2:Class} extends ManagedObject<_$2> implements _$2 {}",
            "${2/(*)/${2:/downcase}/}",
            "${2:/downcase}" //would be nice to be able to do this
            "@Table(name: \"${2/(*)/${2:/downcase}/}\")",
            "class _$2 {",
            "@Column(primaryKey: true, autoincrement: true, indexed: true)",
            "int id;",
            "$3",
            "}",
            ""
        ],
        "description": "Build a data model"
    },

【问题讨论】:

    标签: visual-studio-code vscode-snippets


    【解决方案1】:

    我通过如下更改使其工作:

    "${2/([a-zA-Z]*)/${1:/downcase}/}",

    这里的 $1 指的是这个表达式中的变量(即 $2),而不是上面的 $1 变量。

    编辑: 请参阅下面有关使用 (.*) 的答案。

    【讨论】:

    • 从技术上讲,转换中的 $1 指的是捕获组 #1 = ([a-zA-Z]*)。在您的示例中,由于您编写正则表达式的方式,恰好是整个 $2 制表位(除非您的 $2 制表位中可能有数字)。
    • 感谢您的评论马克。你有关于如何改进它的建议吗?当谈到正则表达式时,我是一个完全的菜鸟。关于您的评论,我永远不会在那个制表位中有数字,只有大写和/或小写字符。
    • 如果您不担心捕获组中的非字母,那么只需 "${2/(.*)/${1:/downcase}/}", 就可以了。
    猜你喜欢
    • 1970-01-01
    • 2021-04-17
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多