EmEditorを使ったビックデータの順番入れ替え機能について
正規表現を使わない順の入れ替えについてです。
またこの機能を削除、入れ替え機能で簡単にダイアログを入れるだけで範囲削除、入れ替えが出来てマクロが録画される機能を希望です。
サンプル
☆
ままま
★
●
たたた
○
マクロ実行後 順番が入れ替わります
●
たたた
○
☆
ままま
★
0
正規表現を使わない順の入れ替えについてです。
またこの機能を削除、入れ替え機能で簡単にダイアログを入れるだけで範囲削除、入れ替えが出来てマクロが録画される機能を希望です。
サンプル
☆
ままま
★
●
たたた
○
マクロ実行後 順番が入れ替わります
●
たたた
○
☆
ままま
★
次のマクロを実行してください。
function SwapBetween( c1, c2, c3, c4 )
{
document.selection.StartOfDocument(false);
while( document.selection.Find(c1,eeFindNext | eeFindReplaceCase,0) ) {
editor.ExecuteCommandByID(4153); // 文字選択を開始
if( !document.selection.Find(c2,eeFindNext | eeFindReplaceCase,0) ) {
alert( "Cannot find " + c2 + " for " + c1 ); // c1 に対応する c2 が見つからない場合にメッセージを表示する
return;
}
str1 = document.selection.Text;
x1 = document.selection.GetAnchorPointX( eePosLogical );
y1 = document.selection.GetAnchorPointY( eePosLogical );
x2 = document.selection.GetActivePointX( eePosLogical );
y2 = document.selection.GetActivePointY( eePosLogical );
document.selection.Collapse();
if( !document.selection.Find(c3,eeFindNext | eeFindReplaceCase,0) ) {
return;
}
editor.ExecuteCommandByID(4153); // 文字選択を開始
if( !document.selection.Find(c4,eeFindNext | eeFindReplaceCase,0) ) {
alert( "Cannot find " + c4 + " for " + c3 ); // c3 に対応する c4 が見つからない場合にメッセージを表示する
return;
}
str2 = document.selection.Text;
document.selection.Delete();
document.selection.Collapse();
document.selection.Text = str1;
document.selection.SetActivePoint( eePosLogical, x1, y1 );
document.selection.SetActivePoint( eePosLogical, x2, y2, true );
document.selection.Text = str2;
if( !document.selection.Find(c2,eeFindNext | eeFindReplaceCase,0) ) { // find c2 again
alert( "unexpected error" );
return;
}
document.selection.Collapse();
}
}
// 元に戻るを破棄して速度優先
DiscardUndo = true;
Redraw = false;
SwapBetween( "☆", "★", "●", "○" );
マクロを実行する方法は、以下の通りです。
MyMacro.jsee
という名前で保存します。@Applekdz
Questioner