数字に替える 続きが有りましたNo.04656
ノノムン さん 05/04/19 21:02
 
インクリメントする始まりの数字を指定して、
他に、頭のゼロを消す、あるいは任意の桁にする必要があります。

ノノムン wrote:
> ノノムンです

[ ]
RE:04656 数字に替える 続きが有りましたNo.04657
山紫水明 さん 05/04/19 23:04
 
 ノノムンさん,こんばんは。

>今度は、始めの = の次から改行の手前までを削除する場合
>正規表現ではどの様になるのでしょうか?

置換でやるとすれば,

replaceall "^[^=]*=\\f.*$", "\\0", regular;
endmacro;

でしょう。

>今回の最終目的は
>;で始まる番号
>reserved=reserved の行
>以外 = の後に 全角数字を インクリメントして入れ替えたいのです。

とりあえず次のマクロで試してください。

//-------------------------------------------------------
disabledraw;
gofiletop;
#i = 1;     // 開始番号
while(1){
    $s = gettext(0,y,linelen,y);
    if(leftstr($s,1) == ";" || $s == "reserved=reserved"
     || (strstr($s,"=") < 0)) {
        moveto 0, y + 1;
        if( y >= linecount - 1 ) break;
        continue;
    }
    #n = strstr($s, "=");
    moveto #n + 1, y;
    deleteafter;
    $num = char(ascii(str(#i)) + 0x821f );  // 数字を全角に
    insert rightstr( "00" + $num, 6);     // 3桁にそろえる場合
    moveto 0, y + 1;
    #i = #i + 1;
}
endmacro;
//-------------------------------------------------------

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

[ ]
RE:04657 数字に替える 続きが有りましたNo.04658
ノノムン さん 05/04/19 23:24
 
ノノムンです

山紫水明さん お返事ありがとう御座います。

Msg0=001
Msg1=002
省略
Msg7=008
Msg8=009
Msg9=001
Msg10=001

この後インクリメントがうまく行きません。

Msg8=009
Msg9=010
Msg10=011

としたいのです。

開始番号と桁数はマクロに書き入れればよいのでしょうか?



山紫水明 wrote:
>  ノノムンさん,こんばんは。

[ ]
RE:04658 数字に替える 続きが有りましたNo.04659
ノノムン さん 05/04/20 00:09
 
ノノムンです
少しさわってみました。
000からインクリメントするようになりました。

しかし、全角数字に変換?方法が判りません。

ほかに、セーブしようとしたとき文字コードの違いで文字が変わるとか出ました。
文字コードはEUC-JP、SHIFT_JIS、ISO-2022-JP、ISO-8859-1、ISO-8859-15
等を使っています。
これらを指定することは出来ますか?

//-------------------------------------------------------
disabledraw;
gofiletop;
#i = 0;     // 開始番号

while(1){
    $s = gettext(0,y,linelen,y);
    if(leftstr($s,1) == ";" || $s == "reserved=reserved"
     || (strstr($s,"=") < 0)) {
        moveto 0, y + 1;
        if( y >= linecount - 1 ) break;
        continue;
    }

    #n = strstr($s, "=");
    moveto #n + 1, y;
    deleteafter;

    $num = str(#i);
    insert rightstr("00" + $num,3); // 3桁にそろえる場合
                                     // 此処で全角数字に変換?方法が判りません
    moveto 0, y + 1;
    #i = #i + 1;
}

endmacro;
//-------------------------------------------------------


ノノムン wrote:
> ノノムンです
>

[ ]
RE:04659 数字に替える 続きが有りましたNo.04660
ノノムン さん 05/04/20 00:20
 
ノノムンです

文字コードで根本的な問題があるようです。
原文は英語ですが ISO-8859-1、ISO-8859-15 のどちらか判りません。
これに、各国の文字を追加してありますが、日本語を追加したとき
SHIFT_JISだったようです。
EUC-JP、か ISO-2022-JP が正しいようなのでこれで書いて、追加しましたが、
この文章は、ISO-8859-1 と ? と EUC-JP に成っているはずですが、
どの様な形式で保存されるのでしょうか? 

ノノムン wrote:
> ノノムンです
> 少しさわってみました。
> 000からインクリメントするようになりました。

[ ]
RE:04660 数字に替える 続きが有りましたNo.04661
山紫水明 さん 05/04/20 08:25
 
 ノノムンさん,こんにちは。

>しかし、全角数字に変換?方法が判りません。

 2桁以上については考慮していませんでした。少しややこしくなります。

//-------------------------------------------------------
#i = 0;     // 開始番号
#figure = 3;    // 桁数
$tume = "00"; // 桁数-1 個の"0"
disabledraw;
gofiletop;
while( 1 ) {
    $s = gettext(0, y, linelen, y);
    if(leftstr($s,1) == ";" || $s == "reserved=reserved"
     || (strstr($s,"=") < 0)) {
        moveto 0, y + 1;
        if( y >= linecount - 1 ) break;
        continue;
    }
    #n = strstr($s, "=");
    moveto #n + 1, y;
    deleteafter;
    $i = str(#i);
    #len = strlen($i);
    #k = 0;
    $num = "";
    while( #k < #len ) {
        $$i = midstr( $i, #k, 1 );
        $num = $num + char( ascii( $$i ) + 0x821f );
        #k = #k + 1;
    }
    insert rightstr( $tume + $num, #figure * 2 );
    moveto 0, y + 1;
    #i = #i + 1;
}
endmacro;
//-------------------------------------------------------

>SHIFT_JISだったようです。
>EUC-JP、か ISO-2022-JP が正しいようなのでこれで書いて、追加しましたが、
>この文章は、ISO-8859-1 と ? と EUC-JP に成っているはずですが、
>どの様な形式で保存されるのでしょうか?

 これについては自信を持ってコメントできませんので,数字の問題とは切り離
して別個の話題として質問していただいた方がいいでしょう。。

     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]
RE:04661 数字に替える 続きが有りましたNo.04666
ノノムン さん 05/04/20 20:23
 
ノノムンです

有り難う御座いました、数字に入れ替えのマクロは正しく動作しました。

山紫水明 wrote:
>  2桁以上については考慮していませんでした。少しややこしくなります。

[ ]