我正在尝试编写一个Visual Studio代码片段,将Pascal case转换为 * 小写空格 *。我快到了:
${1/([A-Z]*)([A-Z][a-z]+)/$1 ${2:/downcase} /g}
字符串
第1组匹配首字母缩略词,第2组匹配大写单词。
因此,如果占位符是MyUIDTest
,则预期结果将是my UID test
。但是现在我得到了my UID test
(注意两边的空格)。
如果组1有匹配项,如何仅在组1后添加空格?我如何删除行尾的空格?
我正在尝试编写一个Visual Studio代码片段,将Pascal case转换为 * 小写空格 *。我快到了:
${1/([A-Z]*)([A-Z][a-z]+)/$1 ${2:/downcase} /g}
字符串
第1组匹配首字母缩略词,第2组匹配大写单词。
因此,如果占位符是MyUIDTest
,则预期结果将是my UID test
。但是现在我得到了my UID test
(注意两边的空格)。
如果组1有匹配项,如何仅在组1后添加空格?我如何删除行尾的空格?
3条答案
按热度按时间eulz3vhy1#
根据文档,
${1:+ }
表示“插入空格 iff 组1被捕获”:字符串
由于
$2
和$3
是互斥的,因此同时使用它们总是会导致实际上只插入一个。| 之后| After |
| --| ------------ |
|
pascal case
个|pascal case
||
my UID test
个|my UID test
||
fo O ba R
个|fo O ba R
|一个更精确(和详细)的版本是(注意,当以JSON字符串编写时,
\b
需要再次转义:"\\b"
):型
我在这里使用的是
TM_SELECTED_TEXT
,但您可能希望根据需要更改它。f3temu5u2#
我认为要删除行尾的空格,您可以简单地在替换模式的末尾添加一个换行符,并且当您使用带有占位符“MyUIDTest”的片段时,它应该正确地生成“我的UID测试”,而没有任何额外的空格。
字符串
此外,要仅在组1匹配时才在组1后添加空格,可以在替换模式中使用条件语句
型
kq0g1dla3#
感谢@bobblebubble:
字符串