You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code代码片段条件插入及文件名转换问题求助

VS Code代码片段:文件名转标题格式问题求助

我需要创建一个VS Code代码片段,将类似12.3-Test_me.md的Markdown文件名转换为Test Me格式,具体要求:

  • 去除文件名开头的数字、符号(如.、-、_)前缀
  • 去除文件名末尾的.md后缀
  • 将文件名中的下划线_替换为空格
  • 每个单词首字母大写

但尝试过程中,下划线替换操作失败,且尝试使用TextMate文档提及的条件插入(conditional insertions)功能时,VS Code中的正则表达式执行出错。我曾用${4/(.+)/(?1: )/}判断捕获组4是否有内容并替换为空格,但未成功。

尝试的代码片段

"test": {
  "prefix": "xxx",
    "body": [
        "Input: $TM_FILENAME\nTreatment:\n\n${TM_FILENAME/(^[0-9 _\\.-]+)|((\\w+)([ _-]))|(\\w+)|(\\.md$)/1: '$1'\n2: '$2'\n3: '$3'\n4: '$4'\n5: '${5:/capitalize}'\n6: '$6'\n\n/g}------\n",
        "Output:\n'${TM_FILENAME/(^[0-9 _\\.-]+)|((\\w+)([ _-]))|(\\w+)|(\\.md$)/$3${4: }${5:/capitalize}/g}'\n(expected: 'Test Me')\n\n------\n",
        "Fails:\n'${TM_FILENAME/(^[0-9 _\\.-]+)|((\\w+)([ _-]))|(\\w+)|(\\.md$)/$3${4/(.+)/(?1: )/}${5:/capitalize}/g}"
    ],
    "description": "Create title from file name"
}

执行输出

Input: 12.3-Test_me.md
Treatment:

1: '12.3-'
2: ''
3: ''
4: ''
5: ''
6: ''

1: ''
2: 'Test_'
3: 'Test'
4: '_'
5: ''
6: ''

1: ''
2: ''
3: ''
4: ''
5: 'Me'
6: ''

1: ''
2: ''
3: ''
4: ''
5: ''
6: '.md'

------

Output:
' Test_ Me '
(expected: 'Test Me')

------

Fails:
'${TM_FILENAME/(^[0-9 _\.-]+)|((\w+)([ _-]))|(\w+)|(\.md$)/ (?1: )/}/capitalize/g}

问题求助

  1. 如何实现目标格式转换?
  2. VS Code是否支持TextMate中的conditional insertions功能?

解决方案

关于条件插入的支持情况

VS Code代码片段的正则替换不支持TextMate的(?1:...)这种嵌套正则的条件语法,但支持${n:+替换内容}形式的条件插入:当捕获组n匹配到内容时,插入指定的替换文本,否则插入空。

正确的代码片段实现

修改替换正则,利用${n:+...}条件语法实现需求:

"Create Markdown Title": {
  "prefix": "md-title",
  "body": [
    "${TM_FILENAME/(^[\\d\\s._-]+)|((\\w+)([_-]))|(\\w+)|(\\.md$)/${1:+}${3:/capitalize}${4:+ }${5:/capitalize}${6:+}/g}"
  ],
  "description": "Convert Markdown filename to title format"
}

正则说明

  • ^[\d\s._-]+:匹配开头的数字、空格、.、_、-前缀,替换为空(${1:+})
  • (\w+)([_-]):匹配带分隔符的单词,$3取单词部分并大写(${3:/capitalize}),$4匹配到分隔符时替换为空格(${4:+ })
  • (\w+):匹配最后一个单词,大写后插入(${5:/capitalize})
  • \.md$:匹配末尾的.md后缀,替换为空(${6:+})

测试12.3-Test_me.md时,最终输出为Test Me,完全符合需求。


内容的提问来源于stack exchange,提问作者James Newton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:35:22