[ 新規に投稿する ]

NumberingX.macの連番修正についてNo.00681
とむ さん 22/12/22 12:00 [ コメントを投稿する ]
  便利なマクロをありがとう御座います。

以下のブロックを選択して実行すると、半角スペースもしくはタブで区切られた数値だけを
・文字列内の数値を置換対象に含まないように
・半角スペースを削除しないように
置換する方法を教えて頂けませんでしょうか?

#define STRING1 2100
#define STRING2  2101
#define STRING3 2102
#define STRING4  2103

(期待する結果)
#define STRING1 3100
#define STRING2  3101
#define STRING3 3102
#define STRING4  3103

(実際の挙動)
#define STRING3100 3101
#define STRING3102  3103
#define STRING31043105
#define STRING31063107
[ ]
RE:00681 NumberingX.macの連番修正についてNo.00682
山紫水明 さん 22/12/22 16:27 [ コメントを投稿する ]
   とむさん,

拙作の総合連番マクロについてのお尋ねでしょうか?
お尋ねの趣旨が今ひとつ理解できないのですが,例示のように単に2を3に変えるだけ
のこ
とでしたら,
「スペース+2」を「スペース+3」
に全置換すればすむことですが,そういうことではないのですか。

                    山紫水明
                    SANSHISUIMEI
[ ]
RE:00682 NumberingX.macの連番修正についてNo.00683
とむ さん 22/12/22 18:25 [ コメントを投稿する ]
  山紫水明様
返信ありがとう御座います。

要領を得ない質問内容で申し訳ありません。
全く違う番号へリナンバリングしたいという内容です。

例えば、以下の2100から始まる値(以下、define値と記します)を、300から始まる連番で取り直したい場合、

#define STRING1 2100
#define STRING2  2101
#define STRING3 2102
#define STRING4  2103
...
#define STRING..  2200
..

define値だけを以下のように変更したいのですが、可能でしょうか?

#define STRING1 300
#define STRING2  301
#define STRING3 302
#define STRING4  303
...
#define STRING..  400
..

define値以外(STRING1の'1'や、define値の前のタブやスペース)は元の状態のまま、define値だけを新しい連番へ変更したい。
というのが趣旨です。

拙い文章で恐縮ですが、よろしくお願い致します。
[ ]
RE:00683 NumberingX.macの連番修正についてNo.00684
とむ さん 22/12/22 18:35 [ コメントを投稿する ]
  山紫水明様
度々すみません。
例えが悪かったので変更致します。

(オリジナル)
#define STRING1 2100
#define STRING2  2101
#define STRING3 2102
#define STRING4  2103
...
#define STRING..  2200
..

(期待する挙動)
#define STRING1 115
#define STRING2  116
#define STRING3 117
#define STRING4  118
...
#define STRING..  215
..

純粋な置換ではなく、指定の値から連番でリナンバリングする為に本マクロを活用させて頂きたく…
何卒よろしくお願い致します。
[ ]
RE:00684 RE^2:NumberingX.macの連番修正についNo.00685
山紫水明 さん 22/12/22 20:36 [ コメントを投稿する ]
   とむさん,

 そうであれば,総合連番マクロの扱う範囲外のようです。
 次のマクロで一度お試し下さい。

//--------- ReNumber.mac ---------------------//
gofiletop;
#ime = imestate;
if (#ime) imeswitch;
$begin = input("スタート番号は?");
#i = val($begin);
while( 1 ) {
    replacedown " [0-9]+$", " " + str(#i), regular;
    if( !result ) break;
    #i = #i + 1;
}
if (#ime) imeswitch;
endmacro;
//-------------------------------------------//

 *最近秀丸マクロを作る機会がほとんど無いので,もっといい方法があるかも
しれませんが。
                  山紫水明
                  SANSHISUIMEI
[ ]
RE:00685 RE^2:NumberingX.macの連番修正についNo.00686
とむ さん 22/12/23 08:54 [ コメントを投稿する ]
  山紫水明様

ありがとう御座います。
所望の動きになりました!(感動

お手を煩わせてしまい申し訳ありませんが、define値の前にタブがある場合でも動作させるためには、どうすれば良いのでしょうか…

#define STRING1(半角スペース)2100 ←OK
#define STRING1(半角スペース)(半角スペース)2100 ←OK
#define STRING1(タブ)(半角スペース)2100 ←OK
#define STRING1(タブ)2100 ←NG
#define STRING1(半角スペース)(タブ)2100 ←NG

\tをどこかに挟めば良いのかな…と考えたのですが、うまくいかず、、、
度々スミマセン。。
[ ]

[ 新規に投稿する ]