VSCode snippet 转换时如何移除输出结果的尾随逗号
解决方案
方案1:单步正则(兼容性最优)
直接通过单条正则判断是否为最后一行,仅非末尾行追加逗号,转换规则如下:
${1/(\w+).*(\n)?/$1${2:+,}/g}
规则说明:
(\w+):捕获每行开头的第一个有效单词,作为分组1.*(\n)?:匹配该行第一个单词后的所有剩余内容,同时尝试捕获行尾的换行符作为分组2;最后一行末尾没有换行符,因此分组2为空$1${2:+,}:输出捕获到的首单词,如果分组2存在(说明当前不是最后一行)就额外追加逗号
该规则直接适配你的示例输入,输出完全符合预期:
foo, bar
方案2:嵌套转换修复
如果你的snippet引擎支持嵌套转换写法,你之前的写法未生效是因为没有匹配逗号后的结尾换行符,修改为以下规则即可:
${${1/(\w+).*/$1,/gm}/,\s*$//}
该规则先给所有匹配行末尾加逗号,再移除整个转换结果末尾的逗号和后续空白/换行符,即可消除多余的尾随逗号。
内容的提问来源于stack exchange,提问作者ElohmroW
相关产品推荐
相关产品推荐

