intellij-idea - WebStorm Live Template,分离一串输入
问题描述
我想为以下内容创建一个实时模板createSelector
:
export const someSelector = createSelector(getThis, getThat, getSomethingElse, (this, that, somethingElse) =>
$END$
)
我可以用一个参数让它很好地工作(例如,只有getThis
这样才会导致(this)
箭头函数 args)。
// 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+)", "$1"))
但这并不能取代任何东西,它只是复制整个东西:
createSelector(getThis, getThat, (getThis, getThat) => )
有没有办法做到这一点?
更新: 我什至学习了 Groovy 脚本并编写了以下内容,它在一个 groovy 操场上工作,但在 WebStorm 中得到的结果与我上面的最后一个示例相同!
groovyScript("return _1.replaceAll(/get(\w+)/) { it[1].uncapitalize() };", someSelector)
解决方案
这可以用 RegEx .. 来完成,但 Java 似乎不支持\l
替换修饰符(用作\l$1
而不是$1
在您的初始regularExpression()
代码中使用)。
现场示例(在 PCRE2 中工作,例如在 PHP 中):https ://regex101.com/r/6faVqC/1
关于替换修饰符的文档:https ://www.regular-expressions.info/refreplacecase.html
在任何情况下:这整个事情都由 Java 处理,并且您在双引号内传递 RegEx 模式或 GrovyScript 代码。因此,任何\
符号都需要转义。
您需要替换get(\w+)
为get(\\w+)
.
以下似乎对我来说很好用(someSelector
Live Template 变量在哪里):
groovyScript("return _1.replaceAll(/get(\\w+)/) { it[1].uncapitalize() };", someSelector)
推荐阅读
- angular - ngx 数据表中的 ngFor
- nginx - Nginx 重定向到新位置,包括子文件夹不区分大小写
- php - 在 Laravel 中添加日期和时间以导出 Excel
- r - reactable:按数字指定列
- html - 单击时Routerlink不会自动向上滚动?
- apache-kafka - 使用 kafka 端点提高事件中心的性能
- javascript - 如何用 postgres(pg-promise)中的当前时间戳更新空时间戳?
- android - 生成并注册一个新的上传密钥 Android React-Native
- c# - .NET 中是否有办法定期暂停线程并找出正在执行的 IL 行
- python - Django 频道创建一个单独的任务,每隔一段时间向组发送消息