2020年5月4日月曜日

サクラエディタで空行を削除、置換マクロの注意点

コピペした情報をテキストで整形する際に空行を削除したくなるときがあります。





















こういう状態で置換で「\r\n」、「」としても、下のように1行にまとまる、悲しい結果になるのと、毎回検索するのが面倒なのでマクロに登録しようと思います。













マクロを使わずに置換する場合は、
置換前:「^\r\n」
置換後:「」
で大丈夫でした。古いバージョンのサクラエディタだとうまくいかない場合もあるので
その場合は「^[\r\n]+」とすると良いです。

----正規表現の意味----
^ : 行頭
[] : []内で指定した文字のどれか 今回は「\r」「\n」「\r\n」のいずれかを意味します。
\r 、 \n 、 \r\n : OSの違いによる改行コード
+ : 1つ左の文字の1個以上繰り返し

つまり、行頭に\r,\n,\r\nのどれかが1個以上ある場合、それは削除するという動作になります。
--------------------



マクロを使う場合
ファイル名は適当に「replace_blank-del.mac」などとして、

//キーボードマクロのファイル
S_ReplaceAll('^\\r\\n', '', 60); // すべて置換
S_ReDraw(0); // 再描画
と記述します。青字の//以降の部分はコメントなので記述不要です。

記述方法がなかなか理解できず悩みました。。

ヘルプには、
構文
void S_ReplaceAll ( S1 , S2 , i1 )
引数 内容
S1 文字列 置換前の文字列
空文字列 (’’) は受け付けない。
S2 文字列 置換後の文字列
i1 整数数値 置換ダイアログの状態を10進数数値で指定する 
設定値
引数 i1 の設定値は次のとおりです。
それぞれの bit が 0=チェックOFF / 1=チェックON
bit 内容
0 単語単位で探す
1 英大文字と小文字を区別する
2 正規表現
3 見つからないときにメッセージを表示
4 置換ダイアログを自動的に閉じる
5 先頭(末尾)から再検索する
6 クリップボードから貼り付ける
7 0=ファイル全体 / 1=選択範囲
9,8 00=選択文字 / 01=選択始点挿入 / 10=選択終点追加 

とあります。

S1」は検索する文字列で、\をヒットさせるには\\と2つ続ける必要があります。
「S2」は置換後の文字なので''と空にします。
「i1」については、使用する機能をチェックONとして、そのビット数を2進数から10進数に変換した値を指定します。


文章では分かりづらいと思うので図で示すとこんな感じです。



8ビット目の、「選択始点挿入」にチェックをする場合は、256を足すので、60+256=316と記述します。


0 件のコメント:

コメントを投稿