要望No.06968
tatuto さん 00/12/01 21:15
 
マクロに変数内の文字列を分割する関数と置換する関数を入れてもらえませんでしょ
うか?
Perlで書けば
$date = "abc<>def";
($name,$val) = split(/<>/$date);
##$nameにabc
##$valにdef
$name =~ s/abc/ABC/g;
##$nameにABC

出来ればご検討をお願いします

--
tatuto mailto:xxxxxx@fine.ocn.ne.jp

[ ]
RE:06968 要望No.06973
山紫水明 さん 00/12/02 15:45
 
    tatutoさん こんにちは。

》マクロに変数内の文字列を分割する関数と置換する関数を入れてもらえませんで
》しょうか?

 Perlはわかりませんが,秀丸マクロで書けば,次のようになるでしょうか。
 多分,ご承知の上でのご要望とは思いますが。

//-------------------------------------------------//
//文字列の分割
$s = "abc<>def";
$s1 = leftstr($s, strstr($s, "<"));
$s2 = rightstr($s, strlen($s) - strstr($s, ">") - 1);
message $s1 + "\n" + $s2;
//大文字への変換
#i = 0;
while(#i < strlen($s1)){
    $a = midstr($s1, #i, 1);
    if(ascii($a) < 'a' || ascii($a) > 'z') $A = $a;
    else $A = char(ascii($a) - 0x20);
    #i = #i + 1;
    $S = $S + $A;
}
message $S;
endmacro;
//-------------------------------------------------//

もっとスマートな書き方があったら教えてください。>皆さん。
確かに,toupper($s), tolower($s), tozenkaku($s), tohankaku($s) のような関
数があれば便利だとは思います。>秀丸担当さん。

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


[ ]
RE:06973 要望No.06974
tatuto さん 00/12/02 20:23
 
tatutoです。

山紫水明さんの <hidesoft.2:06973| RE 06968 要望> から適座引用してます

>//文字列の分割
>$s = "abc<>def";
>$s1 = leftstr($s, strstr($s, "<"));
>$s2 = rightstr($s, strlen($s) - strstr($s, ">") - 1);
>message $s1 + "\n" + $s2;

文字列の分割はこういう方法があったのですね (^_^;)

文字列置換はマクロで言えば
replaceupテイクな処理を変数内の文字列に適用出来るような
関数があったらな〜と思ったわけです

--
tatuto mailto:xxxxxx@fine.ocn.ne.jp

[ ]
RE:06974 要望No.06975
encodingshiftjis さん 00/12/03 00:02
 
エディターマクロとスクリプトは同等に比較はできないのでは
//         Perlで書けば
           $date = "abc<>def";
//         ($name,$val) = split(/<>/$date);
//         ##$nameにabc
//         ##$valにdef
// Perl をなぞるなら 細かい処理は付いてないが 山紫水明さんと 同じです
#slen=strlen($date);
#plen=strlen("<>");  #ppos=strstr($date,"<>"); // 正規表現はダメ
$name= leftstr($date,#ppos);
$val =rightstr($date,#slen-#ppos-#plen); // 分割ループでは次の文字列になる
menu $name,$val;
// リストコンテキストの代入はとうてい無理
// "abc<>def<>abc" =~ s/abc/ABC/g;     ## $_ "ABC<>def<>ABC"
// 文字列対象の正規表現操作はない

マクロは基本が 編集面がレシーバのメソッド呼び出しが主体で、補助として
数値・文字列・秀丸管理などを対象の操作がある。編集面操作が一番豊富で
使いやすい、したがって、スクリプトなら変数で操作することも、作業用編集面に
書き込んでから操作することも普通におこなう。
一般のスクリプト言語と同じ水準まで数値や文字列操作を充実
させるのは、秀丸を成長させる費用対効果比でひきあうか?
特に、マクロの内部の作りはとてもシンプルな様だから。
Win内で動くのだから、外部のコンポーネントを呼び出す能力を強化したほうが
可能性が広がると思うのだが。現在は DLL を書くしか方法がないが。
COMクライアントは課題なのでは?
マクロ自体の機能なら
キーをフックするハンドラーの登録
指定キーsならマクロの処理、それ以外は秀丸のデフォルト動作、とか
入力補完に役立ちそうなコンテナ HASH(連想配列)
あたりが、未開拓のような気がするが。


[ ]
RE:06974 要望No.06976
ひろ さん 00/12/03 13:04
 
 tatuto さん今日は、ひろです。
> replaceupテイクな処理を変数内の文字列に適用出来るような
> 関数があったらな〜と思ったわけです
 お気持ちは解りますが、perl が使えるなら、run 系の分で呼び出すとい
う手も有ります(^^)。

[ ]