- ベストアンサー
秀丸マクロで大文字を小文字に変換する方法
- 秀丸マクロを使ってテキストの大文字を小文字に変換する方法について教えてください。
- 現在、テキストの選択範囲を変数に代入して、filter関数を使用して小文字に変換しようとしていますが、うまくいきません。
- 他に有効な方法があれば教えてください。最新版の秀丸を使用しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
こんにちは。 「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; ========================= 以上です。
その他の回答 (1)
- tatsu99
- ベストアンサー率52% (391/751)
filter文で変換対象となるのは、選択された範囲の文字そのものです。 今回は、filter文ではなくtolowerを直接呼び出してください。 $s = "ABCD"; $s = tolower($s); message $s; で、"abcd"が表示されます。
お礼
解答ありがとうございました。 いろいろフォローがあり完璧に近い回答でした。 今回は $s = gettext(seltopx, seltopy, selendx, selendy); $s = tolower( $s ); で やってみることにします。