【问题标题】:In VSCode snippets how do you use transform to lowercase just the first letter of a value?在 VSCode 代码片段中,如何使用 transform 将值的第一个字母小写?
【发布时间】:2021-09-23 17:39:47
【问题描述】:

我刚刚开始接触 vsCode sn-ps。它们看起来真的很方便。

有没有办法确保用户在制表符处输入的内容以小写值开头。

这是我的测试用例/沙箱:

 "junk": {
    "prefix": "junk",
    "body": [
      "original:${1:type some string here then tab}",
      "lower:${1/(.*)/${1:/downcase}/}",
      "upper:${1/(.*)/${1:/upcase}/}",
      "capitalized:${1/(.*)/${1:/capitalize}/}",
      "camel:${1/(.*)/${1:/camelcase}/}",
      "pascal:${1/(.*)/${1:/pascalcase}/}",
    ],
    "description": "junk"
  }

这是它产生的结果:

original:SomeValue
lower:somevalue
upper:SOMEVALUE
capitalized:SomeValue
camel:somevalue
pascal:Somevalue

“骆驼”非常接近,但如果用户输入骆驼值,我想保留大写。

无论如何我只希望第一个字符更低。

【问题讨论】:

    标签: visual-studio-code vscode-snippets


    【解决方案1】:

    答案是:

    ${1/(.)(.*)/${1:/downcase}$2/}
    

    【讨论】:

      【解决方案2】:

      澄清一下,如果您查看此提交:https://github.com/microsoft/vscode/commit/3d6389bb336b8ca9b12bc1e772f7056d5c03d3ee

      function _toCamelCase(value: string): string {
              const match = value.match(/[a-z0-9]+/gi);
        console.log(match)
              if (!match) {
                  return value;
              }
              return match.map((word, index) => {
                  if (index === 0) {
                      return word.toLowerCase();
                  } else {
                      return word.charAt(0).toUpperCase()
                          + word.substr(1).toLowerCase();
                  }
              })
                  .join('');
          }
      

      camelcase 转换适用于像这样的输入

      some-value
      some_value
      some.value
      

      我认为任何非[a-z0-9]/i 都可以用作单词之间的分隔符。所以SomeValue 的大小写不是camelcase 的预期用途:根据上面的函数,整个SomeValue 是一个匹配项(匹配项不区分大小写),然后整个单词都是小写的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-28
        • 1970-01-01
        相关资源
        最近更新 更多