如何在vs代码项目中用条件链替换delve?
例如:
delve(seo,'meta')
delve(item, "image.data.attributes.alternativeText")期望结果
seo?.meta
item?.image.data.attributes.alternativeText是否可以在Visual代码中使用“查找/替换”?

发布于 2022-05-10 16:15:51
我建议使用以下RegEx:
delve\(\s*([^,]+?)\s*,\s*['"]([^.]+?)['"]\s*\)
以及以下替换格式字符串:
$1?.$2
说明:匹配delve(,第一个参数一直到第一个逗号(惰性匹配),然后是第二个字符串参数(没有注意确保括号匹配,因为这是相当快的‘n’脏),然后是调用)的结束括号。在合理的地方的间隔是计算的。
这将适用于简单的病例,如delve(someVar, "key"),但可能失败的病理病例;始终检查替换手动。
请注意,这显然无法处理delve(var, "a.b.c"),因为据我所知,VSC格式字符串不支持由给定字符串“连接”捕获的变量数。作为解决办法,您可以显式地创建带有2、3、4、5的版本.点并写出相应的替换。例如,两个点的版本如下所示:
delve\(([^,]+?)\s*,\s*['"]([^.]+?)\.([^.]+?)['"]\s*\)
格式字符串是$1?.$2?.$3。
你写:
,G.
delve(seo,'meta')
delve(item, "image.data.attributes.alternativeText")
期望结果
seo?.meta
item?.image.data.attributes.alternativeText
但我对此深表怀疑,因为delve(item, "image.data.attributes.alternativeText")实际上相当于item?.image?.data?.attributes?.alternativeText,而不是您所描述的预期结果。要让它这样处理它,只需将[^.]替换为.,使其接受包含任何字符(包括点)的字符串。
https://stackoverflow.com/questions/72189196
复制相似问题