秀丸マクロで大文字を小文字に変換する方法

このQ&Aのポイント
  • 秀丸マクロを使ってテキストの大文字を小文字に変換する方法について教えてください。
  • 現在、テキストの選択範囲を変数に代入して、filter関数を使用して小文字に変換しようとしていますが、うまくいきません。
  • 他に有効な方法があれば教えてください。最新版の秀丸を使用しています。
回答を見る
  • ベストアンサー

秀丸マクロで 大文字を小文字に変換

秀丸マクロで  テキストを選択範囲して ABCD マクロを実行すると テキストの文字を変えないで  $s = gettext(seltopx,seltopy,selendx,selendy); でテキストを$sに代入したのを $s = ABCD 小文字にするマクロを教えてください。 $s = abcd $s = gettext(seltopx,seltopy,selendx,selendy); filter "" , "ToLower", "$s"; message $s; filterを使って小文字にしようと思っているのですが どうも filterの指定がうまくいってないようです。 小文字になりません。 ヘルプを読んでも 例文がなくわからないのです。 他にも良い方法があれば教えてください。 秀丸は最新版です。 その他編集系文- filter文 http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemac/html/080_CmdStatement_Edit_filter.html 関数- filter( s1, s2, s3, s4 ) 関数 http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemac/html/070_Function_filter.html

質問者が選んだベストアンサー

  • ベストアンサー
noname#144013
noname#144013
回答No.1

こんにちは。 「filter文」と「filter関数」では以下のように用法が異なります。 「filter文」は、   画面上の選択範囲の文字列に対して変換を行う。   変換結果は画面上に反映される。 「filter関数」は、   固定文字列または文字列変数などの文字列に対して変換を行う。   変換結果は戻り値で取得する。   ※こちらは画面上の表示には影響しない。 ですので、  a)画面上の文字列を直接変換する場合  → filter文  b)取得した文字列に対して変換する場合 → filter関数 という用法になると思います。 今回の目的が、上記a)、b)のどちらか判りませんので両方を行うマクロ の例を以下に掲載します。宜しければ検証してみて下さい。 ※当方は、「秀丸エディタ Ver 8.02」にて検証してみました。 ■マクロ例 ========================= //選択範囲の文字列を取得(選択状態は維持する) //注)第5引数に1を指定しないと選択状態は解除されます。 $s1 = gettext(seltopx, seltopy, selendx, selendy, 1); //選択範囲の文字列(画面上)を小文字に変換 //※こちらは「画面上」の選択範囲の文字列に対して変換を行います。 //※第3パラメータには何も指定しない(省略)で良いようです。 filter "" , "ToLower"; //←こちらは「filter文」 //取得した文字列(文字列変数)を小文字に変換(その1) //※こちらは「第4引数に指定した文字列」に対して変換を行います。 $s2 = filter("", "ToLower", "", $s1); //←こちらは「filter関数」 //取得した文字列(文字列変数)を小文字に変換(その2) //※tolower関数でも小文字への変換が可能です。 //※こちらは「第1引数に指定した文字列」に対して変換を行います。 $s3 = tolower($s1); //変換結果をメッセージ表示 $mes = "変換前文字列: " + $s1 + "\n"; $mes = $mes + "変換後文字列(1): " + $s2 + "\n"; $mes = $mes + "変換後文字列(2): " + $s3; message $mes; ========================= 以上です。

synchro-night
質問者

お礼

解答ありがとうございました。 いろいろフォローがあり完璧に近い回答でした。 今回は $s = gettext(seltopx, seltopy, selendx, selendy); $s = tolower( $s ); で やってみることにします。

その他の回答 (1)

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

filter文で変換対象となるのは、選択された範囲の文字そのものです。 今回は、filter文ではなくtolowerを直接呼び出してください。 $s = "ABCD"; $s = tolower($s); message $s; で、"abcd"が表示されます。

関連するQ&A

  • 秀丸マクロについて

    秀丸マクロ初心者です。 OS:XP(SP3)、秀丸:7.08を使っています。 テキストファイルのデータをファイルの先頭から一行ずつ 文字列型変数に読み込んでメッセージをだそうとしていますが うまくいきません。 コードのどこが悪いのか、もしくはもっと簡単にできるやり方などあれば 教えて頂けないでしょうか。 ■コード gofiletop; while (code != eof) { golineend; #end = x; golinetop; $str = gettext(x,y,#end,0); message $str; down; } endmacro;

  • 秀丸マクロについて質問です。

    秀丸マクロについて質問です。 秀丸で編集されたテキスト文書の中でabcdefgという文字列がある行を検索し、 その行情報を取得し、その行の隣にある文字列(下記の例では123456)を返す にはどのようにすればよいでしょうか? ご回答よろしくお願いします。 (例) 567行目に以下の文があるとします。 abcdefg,123456,goukaku

  • 秀丸マクロをハイライトするマクロ

    htmlタグで秀丸マクロをハイライトするマクロを作っています。 強調表示のファイルを見ながら作っています。 「if」 「else if」 「else」を上手に区別する正規表現方法を教えてください。 また、このようなマクロを作るときに役立ちそうな方法がありましたら教えてください。 このようなソースを if (条件式1) message "コメント1"; else if (条件式2) message "コメント2"; else if (条件式3) message "コメント3"; else message "コメント4"; このようにhtmlタグを付けていきます。 <span class="if">if</span> (条件式1) <span class="message">message</span> "コメント1"; <span class="else_if">else if</span> (条件式2) <span class="message">message</span> "コメント2"; <span class="else_if">else if</span> (条件式3) <span class="message">message</span> "コメント3"; <span class="else">else</span> <span class="message">message</span> "コメント4"; マクロはこんな感じです。 setcompatiblemode 0x0F; begingroupundo; replaceall "message" , "<span class=\"message\">message</span>" , regular, word; replaceall "if" , "<span class=\"if\">if</span>" , regular, word; replaceall "else_if" , "<span class=\"else_if\">else_if</span>" , regular, word; replaceall "else" , "<span class=\"else\">else</span>" , regular, word; if( ! result ) beep; endgroupundo 1; endmacroall; 単語の検索 http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemaru/html/190_CmdSearch_WordSearch.html 検索(Ver8.04対応版) http://homepage3.nifty.com/kons/hidemaru/helpsite/hidemaru/html/070_Env_Search.html

  • 秀丸のマクロでファイルを新規秀丸にコピーしたい

    王次郎っす お疲れさまです 秀丸エディタのマクロ関数を使用してファイルの内容を新規秀丸にコピーしたいです クリップボードを使わずにコピーできる方法があったら教えてください 例えば、「memo.txt」というテキストファイルを開いた状態でマクロを実行した場合に 新規秀丸を作成し(newfile)、「memo.txt」の内容を新規秀丸にコピーしたいです。 クリップボードを使用すればできますが(copy⇒paste)、それだとクリップボードの内容が 消えてしまうのでクリップボードは使いたくないです。 よろしくお願いします

  • 「秀丸キーワードチェンジャー」のマクロ登録方法

    いつもお世話になっています。秀丸Ver.4.16を使用しています。 「秀丸キーワードチェンジャー KWCH.EXE V2.2」をダウンロードしたのですが、.macファイルがありません。KWCH.EXE とヘルプ、説明書だけしかありませんでした。 説明書には、「秀丸エディタから呼び出したい場合は、以下のようなマクロを作成して、それを実行するようにしてください。  例: kwch.mac run "c:\\hidemaru\\kwch.exe";」 と記載されているのですが、具体的にどうやればいいのか分かりません。 ホームページで色々と調べたのですが、内容が理解できなくて……肝心の、.macファイルの作成方法、及び、作ったファイルをKWCH.EXE とどう関連づけるのかが分かりません。 初歩的なことですが、分かりやすく教えていただけると助かります。

  • 秀丸を使ったマクロでなんとかならないでしょうか。。

    秀丸を使ったマクロでなんとかならないでしょうか。。 次のような文が書かれたテキストから、 ==== ここから ==== 日曜 犬 月曜 図書館 火曜 散髪 ==== ここまで ==== 次のような文に書き換えたいと思ってます。 ==== ここから ==== 日曜 犬 日曜は犬を、 散歩に連れて行く。 月曜 図書館 月曜は図書館で、 本を読む。 火曜 散髪 火曜は散髪にいく。 ==== ここまで ==== “日曜”を(キーワードA)とすると、“日曜”の次の行の任意の文字列(ここでは犬)を、 次のように代入した文章を(キーワードA)の2行下に追加で書き出すようにしたいんです。 (キーワードA)は(犬)を、 散歩に連れて行く。 上の文章は、仮に(文章A)としてマクロのどこかに記載しないと いけないとかと思いますが。。 同様に、“月曜”を(キーワードB)とすると、図書館は(キーワードb)、 次の文章は(文章B)として考えてます。 そうすると、テキストファイルの例だと構成要素は、 ==== ここから ==== (キーワードA) (キーワードa) (キーワードB) (キーワードb)    ・    ・ ==== ここまで ==== となる感じです。

  • 秀丸のマクロ

    秀丸に英文(日本文)を入力し There is no time to waste. The nation's economy faces three major problems this year. Plans to accelerate disposal could aggravate deflation. が ↓ (1)There is no time to waste. (2)The nation's economy faces three major problems this year. (3)Plans to accelerate disposal could aggravate deflation. となるように終止符(.)ごとに文を切ってそれぞれ文の前に(1)、(2),(3)...と 番号を入れたいのですが、どのようにマクロを組めばよいですか?

  • 秀丸マクロ =検索文字を文末まで置換=

    秀丸エディタのマクロを使って以下の処理を行おうとしました。 1.検索した文字の一行下の行をコピーし、   そのコピーした行末にコピーしたデータを貼り付ける。 2.最初に検索した文字に該当する次の文字の一行下の行をコピーし、   そのコピーした行末にコピーしたデータを貼り付ける。   (繰り返し。) 3.文末(EOF)まで2.の処理を繰り返す。 以下のマクロを作ってみました。 while(code != eof){ setcompatiblemode 15; searchdown "検索文字" , hilight; down 1; copyline; paste; finddown; すると、2.の処理まで正常に実行されるのですが、 検索文字がなくなった時点で2の処理がストップされる事がなく、 それ以降の行のすべてが文末(EOF)まで、コピー&ペーストの処理が 繰り返されます。 例:______________________________________________________ (元の文) ○○ ××× △△ ■■■ ○○ □□□□ ☆☆ (検索する文字) ○○ (マクロ実行後の文) ○○ ××× ××× △△ ■■■ ○○ □□□□ □□□□ ☆☆ ☆☆ ______________________________________________________ 上記の例でいうと、(元の文)の☆☆の部分が、(マクロ実行後の文)で ☆☆ ☆☆ となってしまってます。 この部分を ☆☆ のままにしたいのです。 マクロをどのように組めば実現できるのでしょうか。 よろしくお願いします。

  • 秀丸のマクロ

    教えて下さい。 Solarisの資源を取得したテキストファイルがあります(iostat、sar、vmstat)。 エクセルでグラフ化したいのですが、コンマが挿入されていないため綺麗に表示できません。 文字列と文字列の間のスペース(n個)はカットし、コンマを一つ入れるように秀丸で編集したい場合、どのようにマクロを作成すればよいか教えて下さい。 例) <生データ> tty sd0 sd1 tin tout kps tps serv kps tps serv kps 3 1 461 19 19 460 18 19 0 0 <マクロ実行後> tty,sd0,sd1 tin,tout,kps,tps,serv,kps,tps,serv,kps 3,1,461,19,19,460,18,19,0 宜しくお願いします。

  • 段落の先頭に文字列を挿入する秀丸マクロはありませんか?

    段落の先頭に文字列を挿入する秀丸マクロはありませんか? 文書の作成時に、各段落の先頭に特定文字列を挿入するマクロを探しています。 原稿は英文と日本語文の2通りあり、それぞれについて作業できるようにしたいのですが、どなたかご存知の方はおられますか? ネット上で検索したのですが、なかなか使えるものが見つかりません。 自分でマクロを作成したいところですが、私に難しく、まだ勉強中です。 よろしくお願い致します!

専門家に質問してみよう