2

コードをリファクタリングし、ソースファイルを次のようにgrepするソリューションを探しています

if ( user && user.name && user.name.length() < 128 ) ...

後で ruby​​ の andand または groovy の ? に置き換えるためです。オペレーター(安全航行オペレーター)。

4

2 に答える 2

2

ここから始めましょう。プログラムで正規表現を生成しなくても、これをもっと一般化できるのではないかと思います。

line = "user && user.name && user.name.length()"
p line.match(/(?:(\w*)(?:\s\&\&\s(\1\.(\w*)))(?:\s\&\&\s(\2\.(\w*))))/).to_a.
  reject {|m| m.match(/\./)}.join('.andand.')

=> "user.andand.name.andand.length"
于 2008-12-12T14:15:58.077 に答える
1

IntelliJ のアイデアには、これを可能にする「構造的な検索と置換」があります。これは言語のセマンティクスを理解するので、あらゆる種類の興味深い置換操作を行うことができます。

http://www.jetbrains.com/idea/documentation/ssr.html

于 2008-12-11T13:40:36.677 に答える