首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ES6 / JS:用条件链替换delve的Regex

ES6 / JS:用条件链替换delve的Regex
EN

Stack Overflow用户
提问于 2022-05-10 15:33:09
回答 1查看 51关注 0票数 1

如何在vs代码项目中用条件链替换delve?

例如:

代码语言:javascript
复制
delve(seo,'meta')
delve(item, "image.data.attributes.alternativeText")

期望结果

代码语言:javascript
复制
seo?.meta
item?.image.data.attributes.alternativeText

是否可以在Visual代码中使用“查找/替换”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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,而不是您所描述的预期结果。要让它这样处理它,只需将[^.]替换为.,使其接受包含任何字符(包括点)的字符串。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72189196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档