初めましてNo.03329
ノノムン さん 02/09/05 20:50
 
簡単エディターとして使わせていただいていますが、このごろ
マクロがあるのを知り、使い始めましたが、
マクロ集にあるのは高等すぎて、私には使えません。

私の使いたいのは長い文章の、データーの整理に空白行を消去したり、
行頭、行末のスペースを消去したり、
少し高等なところで 0.000001 を 1u、0.000000000001 を 1p 
という風に単位を書き換えたりしたいのですが、
幾らやってもうまくいきません。

初歩的な方法について教えてください。

それではよろしくお願いいたします。




[ ]
RE:03329 初めましてNo.03330
山紫水明 さん 02/09/05 23:20
 
 ノノムンさん,こんばんは。

》私の使いたいのは長い文章の、データーの整理に空白行を消去したり、
》行頭、行末のスペースを消去したり、

 以下のようなのでいかがでしょう。

//------------------------------------------------//
while( 1 ) {
    menu "行頭空白削除",
         "行末空白削除",
         "空白行削除",
         "終  了";
    if( result == 1 ) call DelTopSpace;
    else if( result == 2 ) call DelEndSpace;
    else if( result == 3 ) call DelNull;
    else break;
}
endmacro;

DelTopSpace:
replaceallfast "^[  \t]+", "", regular;
return;

DelEndSpace:
replaceallfast "[  \t]+$", "", regular;
return;

DelNull:
replaceallfast "^\\n", "", regular;
return;
//------------------------------------------------//

》少し高等なところで 0.000001 を 1u、0.000000000001 を 1p
》という風に単位を書き換えたりしたいのですが、

 こちらの方は,多分数字の組み合わせがあると思いますので単純ではないと思
いますが,さしあたり,上記の例では,

//-----------------------------------------------------//
replaceallfast "0\\.00000\\f[1-9]", "\\1u", regular;
replaceallfast "0\\.00000000000\\f[1-9]", "\\1p", regular;
endmacro;
//-----------------------------------------------------//

     では, (^^)/~
                                        山紫水明

[ ]
RE:03330 初めましてNo.03331
ノノムン さん 02/09/05 23:43
 
山紫水明さん こんばんは ノノムンです。

お返事ありがとうございます。

"行頭空白削除",
"行末空白削除",
"空白行削除",
は出来たのですが、書いていただいたのと少し内容が違いますが、
その違いが判りません。

また、単位を書き換えについては1回だけ出来ましたが、
繰り返す方法が判りません。

0.000001 を 1u の例は 次の場合 0.00000123 を 1.23u 
にしなくてはなりません。

お手すきの時にもっと教えてください。

ありがとうございました。


//----------------
gofiletop;

//この部分を「EOF」まで繰り返して
//使いたいのですが、判りません。
//{
replacedown "0.000000000000","";
golineend
insert "p";
replacedown "0.000000000","";
golineend
insert "n";
replacedown "0.000000","";
golineend
insert "u";
replacedown "0.000","";
golineend
insert "m";
if( result == eof )
//}

replaceall "^[  \t]", "", regular;
gofiletop;
replaceall "[  \t]$", "", regular;
gofiletop;
replaceall "^[\\n]", "", regular;
gofileend;
insert " ";

//----------------

山紫水明 wrote:
>
>  ノノムンさん,こんばんは。
>
> 》私の使いたいのは長い文章の、データーの整理に空白行を消去したり、
> 》行頭、行末のスペースを消去したり、
>
>  以下のようなのでいかがでしょう。
>
> //------------------------------------------------//
> while( 1 ) {
>     menu "行頭空白削除",
>          "行末空白削除",
>          "空白行削除",
>          "終  了";
>     if( result == 1 ) call DelTopSpace;
>     else if( result == 2 ) call DelEndSpace;
>     else if( result == 3 ) call DelNull;
>     else break;
> }
> endmacro;
>
> DelTopSpace:
> replaceallfast "^[  \t]+", "", regular;
> return;
>
> DelEndSpace:
> replaceallfast "[  \t]+$", "", regular;
> return;
>
> DelNull:
> replaceallfast "^\\n", "", regular;
> return;
> //------------------------------------------------//
>
> 》少し高等なところで 0.000001 を 1u、0.000000000001 を 1p
> 》という風に単位を書き換えたりしたいのですが、
>
>  こちらの方は,多分数字の組み合わせがあると思いますので単純ではないと思
> いますが,さしあたり,上記の例では,
>
> //-----------------------------------------------------//
> replaceallfast "0\\.00000\\f[1-9]", "\\1u", regular;
> replaceallfast "0\\.00000000000\\f[1-9]", "\\1p", regular;
> endmacro;
> //-----------------------------------------------------//
>
>      では, (^^)/~
>                                         山紫水明

[ ]
RE:03331 初めましてNo.03337
山紫水明 さん 02/09/06 20:37
 
 ノノムンさん,こんばんは。

》"行頭空白削除",
》"行末空白削除",
》"空白行削除",
》は出来たのですが、書いていただいたのと少し内容が違いますが、
》その違いが判りません。

 メニューの部分を除いて考えてみます。

》replaceall "^[  \t]", "", regular;
》gofiletop;  ← 不要
》replaceall "[  \t]$", "", regular;
》gofiletop;  ← 不要
》replaceall "^[\\n]", "", regular; ← []は不要
》gofileend;
》insert " ";

 上に示したように2個の gofiletop は不要です。全置換はカーソルがどこにあ
ってもかまいません。
 []は2個以上の文字がある場合に使います。この場合は改行文字1字だけです
ので不要です。
 以上はあっても害にはなりませんが,余分だということです。

》0.000001 を 1u の例は 次の場合 0.00000123 を 1.23u
》にしなくてはなりません。

 以下のようにしてみてください。
//----------------------------------------------------------------
replaceallfast "0\\.00000\\f[1-9]\\f[0-9]*", "\\1.\\2u", regular;
replaceallfast ".u", "u";
//----------------------------------------------------------------

》//----------------
》gofiletop;

》//この部分を「EOF」まで繰り返して
》//使いたいのですが、判りません。
》//{
》replacedown "0.000000000000","";
》golineend
》insert "p";
》replacedown "0.000000000","";
》golineend
》insert "n";
》replacedown "0.000000","";
》golineend
》insert "u";
》replacedown "0.000","";
》golineend
》insert "m";
》if( result == eof )
》//}


》//----------------

  replacedown だけでは通常ファイル末尾までカーソルは行きません。
 この方式でやるとすれば,次のようにする必要があります。

//-----------------------------------------------------//
gofiletop;
while( 1 ) {
    replacedown "0.000000000000", "";
    if( result == 0 ) break;
    golineend
    insert "p";
}
gofiletop;
while( 1 ) {
    replacedown "0.000000000", "";
    if( result == 0 ) break;
    golineend
    insert "n";
}
gofiletop;
while( 1 ) {
    replacedown "0.000000", "";
    if( result == 0 ) break;
    golineend
    insert "u";
}
gofiletop;
while( 1 ) {
    replacedown "0.000", "";
    if( result == 0 ) break;
    golineend
    insert "m";
}
endmacro;
//-----------------------------------------------------//

 ちなみにタグ付き置換を用いれば次のようにもできます。

//-------------------------------------------------------------------//
disabledraw;
replaceallfast "0\\.000000000000\\f[1-9]\\f[0-9]*", "\\1.\\2p", regular;
replaceallfast "0\\.000000000\\f[1-9]\\f[0-9]*", "\\1.\\2n", regular;
replaceallfast "0\\.000000\\f[1-9]\\f[0-9]*", "\\1.\\2u", regular;
replaceallfast "0\\.000\\f[1-9]\\f[0-9]*", "\\1.\\2m", regular;
replaceallfast "\\.\\f[pnum]", "\\1", regular;
endmacro;
//-------------------------------------------------------------------//

#目がちらついて 0 の数があやしいかも知れません。(^^;

     では, (^^)/~
                                        山紫水明

[ ]