連続改行の削除No.23480
YU さん 07/09/04 12:56
 
いつもお世話になっております。

改行が多数続いているのを、1行にしたいのですが

replaceall "\\n\\n+" , "\\n" , regular;

上記ではうまく動作しません、
どのように作成したら一度で多数の改行を1行にできますか?

よろしくお願いします。

[ ]
RE:23480 連続改行の削除No.23481
秀丸担当 さん 07/09/04 14:18
 

>いつもお世話になっております。
>
>改行が多数続いているのを、1行にしたいのですが
>
>replaceall "\\n\\n+" , "\\n" , regular;
>
>上記ではうまく動作しません、
>どのように作成したら一度で多数の改行を1行にできますか?
>
>よろしくお願いします。

改行に対して + や * などを使うと、うまくできないです。
詳細はヘルプの「\nを使った複数行検索の際の制限について」を参照してみてく
ださい。

空行を無くしたいということであれば、
replaceall "^\\n", "", regular;
でどうでしょうか。

連続した空行を1つの空行にしたいということになると、何度か繰り返すような
処理にしないとだめかもしれません。

[ ]
RE:23480 連続改行の削除No.23482
K'zawa さん 07/09/04 14:24
 
YUさん、こんにちは。
K'zawa/ユーザーです。

>改行が多数続いているのを、1行にしたいのですが
>
>replaceall "\\n\\n+" , "\\n" , regular;
>
>上記ではうまく動作しません、
>どのように作成したら一度で多数の改行を1行にできますか?

私は下のようにしています。

disabledraw;
while(1){
    replaceallfast "^\\n\\n","\\n",regular;
    if(!result) break;
}

[ ]
RE:23482 連続改行の削除No.23522
YU さん 07/09/10 09:22
 
K'zawaさん・秀丸担当さん
有り難う御座いました。

>disabledraw;
>while(1){
>    replaceallfast "^\\n\\n","\\n",regular;
>    if(!result) break;
>}

秀丸担当さんのマクロの意味はわかるのですが、
K'zawaさんのマクロはC言語を勉強しないと
難しいのでしょうか?

よろしければマクロ動作の意味を教えて頂けると助かります。
忙しい中すみません

[ ]
RE:23522 連続改行の削除No.23526
秀丸担当 さん 07/09/10 10:39
 

>>disabledraw;
>>while(1){
>>    replaceallfast "^\\n\\n","\\n",regular;
>>    if(!result) break;
>>}

disabledrawはマクロ実行中に描画をしないという意味です。
while(1){...}で囲まれた部分は、何度も繰り返すという意味です。
if(!result) break;は、replaceallfastで何も置換されなかったときにwhileの
繰り返しを中断するという意味です。
詳しくはマクロヘルプを参照してみてください。

[ ]