VS Code代码片段正则表达式失效,求文件名格式转换方案
VS Code代码片段文件名转换解决方案
问题说明
有一批文件名以core-开头,后续为一个或多个连字符分隔的单词,示例:
core-query core-query-pagination core-query-pagination-numbers
需要通过VS Code代码片段将其转换为全大写、空格分隔的格式,要求:
- 移除
core-前缀 - 将连字符
-替换为空格 - 所有单词转为大写
当前使用的正则表达式输出为单词首字母大写的格式,不符合全大写要求:
"${TM_FILENAME_BASE/([^-]+)(-*)/${1:/capitalize}${2:+ }/g}"
输出结果:
Core Query Pagination Numbers
正确实现方案
方案1:嵌套替换(通用灵活)
使用嵌套变量替换,分三步完成转换,逻辑清晰且适配任意数量的连字符分隔单词:
"${${TM_FILENAME_BASE/^core-//}/-/ /g:/toUpperCase}"
执行逻辑:
${TM_FILENAME_BASE/^core-//}:先移除文件名中的core-前缀,得到query、query-pagination这类内容/-/ /g:把剩余内容里的所有连字符-替换为空格,得到query、query pagination这类格式:/toUpperCase:将最终处理后的字符串统一转为大写,得到目标结果
方案2:单正则全局替换
通过单个正则表达式一次性完成所有转换步骤:
"${TM_FILENAME_BASE/(^core-)|-([a-z]+)/${2:/toUpperCase}${1:+ }/g}"
执行逻辑:
- 匹配
^core-前缀并替换为空 - 匹配
-([a-z]+)格式的片段,将捕获到的单词转为大写,同时把连字符替换为空格 - 全局匹配确保所有连字符和单词都被处理
测试验证
使用上述任意方案,对示例文件名的转换结果均符合预期:
QUERY QUERY PAGINATION QUERY PAGINATION NUMBERS
内容的提问来源于stack exchange,提问作者Germán
相关产品推荐
相关产品推荐

