0

我有注释的类, @SequenceGenerator(name = "seq_gen",/*other_parameters*/) 我需要在每个类中"seq_gen"替换。"$Class$_seq_gen"

我试过跟随。

搜索

@SequenceGenerator(name = "seq_gen")
class $Class$ {}

替代品

@SequenceGenerator(name = "$Class$_seq_gen")
class $Class$ {}

当我运行更换时,/*other_parameters*/零件会被移除。

我也试过

搜索

@SequenceGenerator(name = "$VALUE$")
class $Class$ {}

替代品

"$Class$_$VALUE$"

作为目标,$VALUE$它现在不会删除任何内容,而是替换_seq_gen为好像$Class$没有定义一样。

我怎样才能做到这一点?SSR 的文档非常混乱且不详细。


我通过在 SO 上的搜索找到了这个问题,但它没有实际的答案,实际上是关于数组的问题。用 IntelliJ IDEA 的结构替换替换注释参数之一

4

2 回答 2

0

我发现了一个丑陋的解决方法,只需对所有可能的 N 执行此操作:

搜索:

@SequenceGenerator(name = "$VALUE$", $param1$ = $value1$,/*...*/ $paramN$ = $valueN$)
class $Class$ {}

替代品:

@SequenceGenerator(name = "$Class$_$VALUE$", $param1$ = $value1$,/*...*/ $paramN$ = $valueN$)
class $Class$ {}

我真的不希望这是真正的答案,所以我不会在下周内接受它,希望有人提供更好的答案:)

于 2018-04-11T13:33:42.887 回答
0

由于结构搜索中与注释参数相关的错误,这很难实现。然而,有一个使用替换变量和 Groovy 脚本的解决方法。使用以下搜索模板:

@SequenceGenerator(name = $value$)
class $Class$ {}
$value$ 约束

文本/正则表达式:("seq_gen"包括引号)
此变量是搜索的目标:启用

替换模板:

$replacement$
$replacement$ 脚本约束

脚本文本:

import com.intellij.psi.util.PsiTreeUtil
import com.intellij.psi.PsiClass

def x = PsiTreeUtil.getParentOfType(value, PsiClass.class);
"\"" + x.name + "_seq_gen\""
于 2018-04-11T18:29:18.850 回答