71685


EmEditorで既存のカラムの値に対して、一括置換を行いたいのですが、既存の連続置換操作では実行順序が一般的なプログラムと同様上部から実行されますので、最初に処理した置換を上書きしてしまいます。

例えば下記のような５段階の尺度が格納されている値を

[code]

    [1,2,3,4,5]
    
[/code]

下記のように逆スケールに変換したいのですが

[code]

    [5,4,3,2,1]
    
[/code]

このような場合、既存の機能で行えますでしょうか？  
マクロの作成が必要でしょうか？  
※１→５に変換、２→４に変換、３→３に変換、４→５に変換、５→１に変換といったような形です。  
※SQLのCASE式のようなイメージで既存の値を変換するイメージです。

ご確認宜しくお願いいたします。


CC BY-SA 4.0
2020-11-03T03:29:25.900
71683
2022-06-05T15:40:22.287
2022-03-29T00:03:37.673
3060
42582
question
emeditor
連続置換ではなく一括置換を行いたい


尺度として使われていない値（例えば、11,12,13,14,15)に一旦一括変換し、  
それを希望する値になるように再度一括変換する、という手順で行えば可能だと思います。

つまり、  
1を11に一括変換  
2を12に一括変換  
3を13に一括変換  
4を14に一括変換  
5を15に一括変換

これで、[1,2,3,4,5]が[11,12,13,14,15]になります。

そして、  
11を5に一括変換  
12を4に一括変換  
13を3に一括変換  
14を2に一括変換  
15を1に一括変換

これで、[11,12,13,14,15]が[5,4,3,2,1]になります。


CC BY-SA 4.0
2020-11-03T04:09:43.383
71685
2020-11-03T04:09:43.383
217
71683
answer


EmEditor v21.7 以上では、[連続置換] ダイアログ ボックスに [すべて一括置換]
ボタンが追加されました。これを使用すれば、ご希望の一括置換の動作になります。

マクロを使用する場合には、次のように `eeExFindMulti` フラグを使用ください。さらに、リンク ファイルを使用するのが便利です。リンク
ファイルには、`Tab` で区切られた検索文字列と置換後文字列のペアを改行で区切って複数個指定できます。

[code]

    batch_list = editor.filters;
    batch_list.AddReplace("E:\\Test\\LinkFile.txt", "", eeFindReplaceCase, eeExFindLinkFile );
    document.selection.BatchReplace(batch_list, eeReplaceAll, eeExFindMulti);
    
[/code]

リンク ファイル (上記サンプルの `E:\Test\LinkFile.txt`) の中身の例 (UTF-8 または UTF-16 で保存してください、\t
は Tab を表します)

[code]

    検索文字列1\t置換文字列1
    検索文字列2\t置換文字列2
    ...\t...
    
[/code]

ただし、v21.7では、この「すべて一括置換」が利用できる条件は、正規表現や数値範囲でなく、検索文字列に改行を含まない単純な場合に限ります。v21.8
からは、改行を含まなければ、正規表現や数値範囲も含められるようになりました。


CC BY-SA 4.0
2022-03-28T20:25:45.037
88080
2022-06-05T15:40:22.287
2022-06-05T15:40:22.287
40017
40017
71683
answer