【问题标题】:Vscode snippet: tranform filename to Capitalize sentence with a regexVscode 片段:使用正则表达式将文件名转换为大写句子
【发布时间】:2022-02-25 06:16:44
【问题描述】:

我想在 Vscode sn-p 中将 filename-with-dashes.md 转换为 Filename with dashes

确切地说,我想在这个 sn-p 中填充字段"title",从类似于firt-post-ever.md 的文件名中得到First post ever

"FrontMatter": {
    "scope": "markdown",
    "prefix": "frontmatter",
    "body": [
        "---",
        "title: '${TM_FILENAME_BASE/^([^-]*)-([^.]*).*/${1:/pascalcase} ${2:/capitalize}/}'",
        "draft: true",
[...]

我目前所拥有的

这个正则表达式将filename-with-dashes.md 更改为Filename with-dashes(← 最后我仍然需要删除破折号):

${TM_FILENAME_BASE/^([^-]*)-([^.]*).*/${1:/pascalcase} ${2:/downcase}/}

我检查的资源:

不幸的是,这些页面不足以找到正确的答案(我无法理解正则表达式的语法,尽管我付出了很大的努力我还是无法理解......)有什么提示吗?

注意事项

  • 只有整个标题的第一个字母必须大写
  • 文件名可能包含点(例如:notes-for-dev.to-update-2022.md)。
    在这种情况下只有文件扩展名必须被删除

【问题讨论】:

  • 所以notes-for-dev.to-update-2022.md 的结果是notes-for-dev.to-update-2022. ?
  • 嗨@Mark,“notes-for-dev.to-update-2022”的结果是“Notes For Dev.to Update 2022”,正则表达式在“我目前拥有的”下方报告
  • 想要notes-for-dev.to-update-2022.md 的结果是Notes For Dev.to Update 2022
  • 不,我只想将第一个字母大写:Notes for dev.to update 2022

标签: regex visual-studio-code code-snippets


【解决方案1】:

这是一个有效的 sn-p:

"FrontMatter": {
    "scope": "markdown",
    "prefix": "frontmatter",
    "body": [
        "---",
        
        "title: '${TM_FILENAME_BASE/(^\\w*)|(-)/${1:/pascalcase}${2:+ }/g}'",
        
        // if other words might have caps you don't want

        "title: '${TM_FILENAME_BASE/(^\\w+)|(\\w+)|(-)/${1:/pascalcase}${3:+ }${2:/downcase}/g}'",
        
        "draft: true"
    ]
}

(^\\w+) 获取捕获组 1 中的第一个“单词”
(\\w+) 获取捕获组 2 中的任何其他单词
(-) 获取捕获组 3 中的任何 -

${1:/pascalcase}第一个单词的第一个字母大写,第一个单词的其余字母小写。

${3:+ } 如果有组 3,则添加一个空格 - 从而将任何 - 替换为空格。

【讨论】:

  • 完美!正则表达式太难理解了,衷心感谢!
猜你喜欢
  • 2021-04-18
  • 1970-01-01
  • 2021-10-16
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 2011-06-21
相关资源
最近更新 更多