|
yrk00770 さん今日は、ひろです。
> 大文字に変換する toupper(もしくは、小文字に変換する tolower)の
> 使い方を教えて頂けないでしょうか。
<中略>
> ヘルプ中の「その他のコマンド系文」には引数の使い方が書かれていない
> もので、どうも理解ができておりません。
秀丸のマクロ・ヘルプは、(その書き方が良いかどうかは別にして) メニュー
から行える機能を再現する文は、詳しい説明が書かれていません。「大/小文
字に変換」も同様です。
ここまで書くとお気づきかもしれませんが、toupper, tolower はどちらも
保存された文字列変数を変換するのではありません。あくまでウィンドウ上
で選択された文字列を変換する文です。
そこで yrk00770 さんの行いたいことは、末尾のように大/小文字に変換す
るサブルーチンを用意し、それを呼び出すようにすればよいと思います。(た
だしキリル文字未対応)
P.S マクロの内容に更に質問がある場合、
http://www.maruo.co.jp/hidesoft/4/
にお願いします。
//------------ 大/小文字に変換するサブルーチン使用サンプル ----------
call TOUPPER2 "azaz";
message $$return;
call TOLOWER2 $$return;
message $$return;
endmacro;
TOUPPER2://小文字を大文字に変換
##char=0x8281;
while(##char<=0x829A){
call ChangeCharacter $$1,char(##char),char(##char-0x21);
$$1=$$return;
##char=##char+1;
}
call TOUPPER $$1;
return $$return;
TOUPPER://小文字を大文字に変換 (半角文字のみ)
##char=0x61;
while(##char<=0x7A){
call ChangeCharacter $$1,char(##char),char(##char-0x20);
$$1=$$return;
##char=##char+1;
}return $$1;
TOLOWER2://大文字を小文字に変換
##char=0x8281;
while(##char<=0x829A){
call ChangeCharacter $$1,char(##char-0x21),char(##char);
$$1=$$return;
##char=##char+1;
}
call TOLOWER $$1;
return $$return;
TOLOWER://大文字を小文字に変換 (半角文字のみ)
##char=0x61;
while(##char<=0x7A){
call ChangeCharacter $$1,char(##char-0x20),char(##char);
$$1=$$return;
##char=##char+1;
}return $$1;
ChangeCharacter://buff 中の文字列を置換
//$$1:buffer
//$$2:検索文字列
//$$3:置換文字列
##change_char=strlen($$2);
$$string = "";
while(1){
##number = strstr($$1, $$2);
if(##number == -1)break;
else{
##long = strlen($$1);
$$string = $$string + leftstr($$1, ##number) + $$3;
$$1 = rightstr($$1, ##long - ##number - ##change_char);
}
}
return $$string + $$1;
|
|