【问题标题】:Modify vscode snippet by regex: TitleCase and SNAKE_CASE通过正则表达式修改 vscode 片段:TitleCase 和 SNAKE_CASE
【发布时间】:2021-07-12 23:38:25
【问题描述】:

vscode sn-ps+regex有两个问题;

  1. 我有一个像 some-component 这样的路径名,我需要使用 vscode sn-p 生成像 SomeComponent 这样的输出。

  2. 我需要输入sendData 并返回一个类似const sendData = createMessage(SEND_DATA); 的字符串

如何在 vscode sn-p 上使用正则表达式来做到这一点?

【问题讨论】:

    标签: visual-studio-code vscode-snippets


    【解决方案1】:
    1. "${TM_DIRECTORY/(.*)/${1:/pascalcase}/g}" you didn't really provide enough info on how you are getting your pathName, so this is just one possibility, perhaps RELATIVE_FILEPATH` 适合你。

    2. "$1 = createMessage(${1/(([^A-Z]+)(\\w*))/${2:/upcase}_${3:/upcase}/});"

    将输入 sendData 分成 2 个捕获组 $2 和 $3。在转换中将它们都大写。

    "sendData": {
      "prefix": "cm",
      "body": [
        "${TM_DIRECTORY/(.*)/${1:/pascalcase}/}",
    
        // simpler form if ONLY two "words" like "sendData"
        "$1 = createMessage(${1/(([^A-Z]+)(\\w*))/${2:/upcase}_${3:/upcase}/});",
    
       // for any number of words, like "sendDataTwoThreeFour" use this:
       "$1 = createMessage(${1/([a-z]*)([A-Z][a-z]*)/${1:/upcase}${2:+_}${2:/upcase}/g});"
      ]
    }
    

    ${1/([a-z]*)([A-Z][a-z]*)/${1:/upcase}${2:+_}${2:/upcase}/g} 将第一个单词“send”放入捕获组 1,将“Data”或“Two”等其他单词放入 subsequent matches' 捕获组 2。[所以g最后的标志很重要。]

    大写组 1。然后如果有组 2 ${2:+_} 添加_。然后大写 group2。

    唯一不起作用的情况是send,没有别的。它仍然会打印出所有文本,如果它本身没有大写 send。可能有一种方法可以包含它...

    编辑:这里是:

    "$1 = createMessage(${1/([a-z]*)([A-Z][a-z]*)|([a-z]+)/${1:/upcase}${3:/upcase}${2:+_}${2:/upcase}/g});"

    现在一个裸露的send 将被放入第 3 组并向上转换。剩下的比赛不会有第 3 组,所以${3:/upcase} 什么都不返回。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      相关资源
      最近更新 更多