WebStorm Live Template,分隔一串输入

WebStorm Live Template, separate a string of inputs

我想为 createSelector 创建一个实时模板:

export const someSelector = createSelector(getThis, getThat, getSomethingElse, (this, that, somethingElse) => 
  $END$
)

我可以用一个参数让它工作得很好(例如,只有 getThis 然后在箭头函数 args 中产生 (this))。

// template text
createSelector($someSelector$, ($variable$) => $END$)

// variables
// expression for "variable": 
decapitalize(regularExpression(someSelector, "get", ""))

如上所述,这适用于单个参数,几乎适用于多个参数,但大写除外:

createSelector(getThis, getThat, getSomethingElse, (this, That, SomethingElse) => /* $end$ */)

我尝试将整个内容包装在 camelCase 中,但是逗号和空格当然消失了。

问题很明显,我正在一次处理整个字符串,所以整个字符串通过任何字符串格式化函数都是 运行。似乎没有任何方法可以单独处理“get”的各个实例。

我尝试了我认为可行的捕获组:

decapitalize(regularExpression(someSelector, "get(\w+)", ""))

但这并没有取代任何东西,它只是复制了整个东西:

createSelector(getThis, getThat, (getThis, getThat) => )

有什么方法可以做到这一点吗?

更新: 我什至学习了 Groovy 脚本并编写了以下内容,它在 groovy 操场上运行,但进入 WebStorm 得到的结果与我上面的最后一个示例相同!

groovyScript("return _1.replaceAll(/get(\w+)/) { it[1].uncapitalize() };", someSelector)

这可以用 RegEx 来完成。但是 Java 似乎不支持 \l 替换修饰符(在你的代码中用作 \l 而不是 </code>初始 <code>regularExpression() 代码)。

实例(适用于 PCRE2,例如 PHP):https://regex101.com/r/6faVqC/1

关于替换修饰符的文档:https://www.regular-expressions.info/refreplacecase.html


在任何情况下: 这一切都由 Java 处理,并且您在双引号内传递 RegEx 模式或 GrovyScript 代码。因此任何 \ 符号都需要转义。

您需要将 get(\w+) 替换为 get(\w+)

以下似乎对我来说工作得很好(其中 someSelector 是实时模板变量):

groovyScript("return _1.replaceAll(/get(\w+)/) { it[1].uncapitalize() };", someSelector)