我正在尝试创建一个VS代码片段,以基于项目中的当前文件夹来构建命名空间。
由TM_DIRECTORY
变量提供的当前路径可能是这样的。
/Users/bernhardrichter/GitHub/heatkeeper2000/src/HeatKeeper.Server/Mapping
基于我的根源文件夹为namespace HeatKeeper.Server.Mapping
,我想结束的是src
所以我需要剥离src
之前和包括的所有内容,以便我们得到HeatKeeper.Server/Mapping
的支持。然后我需要将/
替换(转换)为.
,以便最终结果为HeatKeeper.Server.Mapping
。
是否可以在单个转换中执行此操作?如果没有,是否可以进行多次转换?
这是我到目前为止所拥有的
"namespace ${TM_DIRECTORY/(.*src.)(.*).*$/$2/}"
这将输出namespace HeatKeeper.Server/Mapping
,这几乎是我想要的。我只需要将所有/
替换为.
问题是我不知道将转换放在哪里。
转换看起来像这样。
"${TM_DIRECTORY/[\\/]/./g}"
这给了我
.Users.bernhardrichter.GitHub.heatkeeper2000.src.HeatKeeper.Server.Mapping
我只是不知道如何将两者结合在一起?
答案 0 :(得分:0)
是的,您可以在一个代码段中完成它们,只需在src
之后分别捕获两个目录。试试:
"namespace ${TM_DIRECTORY/.*src\\/(.*)\\/(.*)$/$1.$2/}",
然后在两个捕获组之间放置一个period
。此正则表达式假定您始终在想要的两个目录之前有一个src
目录。如果不是这种情况,将可以捕获最后两个目录:
"namespace ${TM_DIRECTORY/.*\\/(.*)\\/(.*)$/$1.$2/}",
请注意,路径分隔符“ /
”必须两次转义。