◀一般トップへ
  • 6728 英単語の先頭を大文字化、以降を小文字化
    • 6732 Re:英単語の先頭を大文字化、以降を小文字化
    • 6733 Re:英単語の先頭を大文字化、以降を小文字化
      • 6734 Re2:英単語の先頭を大文字化、以降を小文字化
        • 6735 Re3:英単語の先頭を大文字化、以降を小文字化
          • 6736 Re4:英単語の先頭を大文字化、以降を小文字化
            • 6738 Re5:英単語の先頭を大文字化、以降を小文字化
              • 6739 Re6:英単語の先頭を大文字化、以降を小文字化
                • 6740 Re7:英単語の先頭を大文字化、以降を小文字化
                  • 6741 Re8:英単語の先頭を大文字化、以降を小文字化
                    • 6743 Re9:英単語の先頭を大文字化、以降を小文字化
                    • 6744 Re9:英単語の先頭を大文字化、以降を小文字化
                  • 6742 Re8:英単語の先頭を大文字化、以降を小文字化
                    • 6745 Re9:英単語の先頭を大文字化、以降を小文字化
              • 6747 Re6:英単語の先頭を大文字化、以降を小文字化
  • [6728] 英単語の先頭を大文字化、以降を小文字化 msk 2008年07月23日 14:17

    変換メニュー、マクロないし正規表現置換等で題名の変換機能が可能かどうか模索しております。ご存知の方がいらっしゃいましたらご教授お願い致します。
    • [6732] Re:英単語の先頭を大文字化、以降を小文字化 まりこ 2008年07月25日 07:52

      ▼ mskさん
      > 変換メニュー、マクロないし正規表現置換等で題名の変換機能が可能かどうか模索しております。ご存知の方がいらっしゃいましたらご教授お願い致します。
      わたしの場合、サクラで読み込んだファイルをxyzzyに送り、
      先頭を大文字化して、サクラで再読込をして、編集しています、
    • [6733] Re:英単語の先頭を大文字化、以降を小文字化 なすこじ 2008年07月25日 19:01

      以下のようなマクロでどうでしょうか?

      S_SearchNext( '\b[a-zA-Z]', 22 )
      S_ToUpper()
      S_SearchNext( '(?<=[a-zA-Z])[a-zA-Z]+\b', 22 )
      S_ToLower()
      • [6734] Re2:英単語の先頭を大文字化、以降を小文字化 なすこじ 2008年07月26日 10:41

        単語がaとか1文字だと直後の動きが変ですね。
        2個目のS_SearchNextの +\b の所は *\b の方が良いようです。
        • [6735] Re3:英単語の先頭を大文字化、以降を小文字化 msk 2008年07月27日 23:11

          ▼ なすこじさん
          > 単語がaとか1文字だと直後の動きが変ですね。
          > 2個目のS_SearchNextの +\b の所は *\b の方が良いようです。

          ご親切にありがとうございます。
          ご教示頂いた文字列を.macで保存したんですが、候補が黄色くハイライトされただけで変換の処理が完了しません。
          やり方が不明なのでこちらもお手数ですが教えて頂けますか?
          • [6736] Re4:英単語の先頭を大文字化、以降を小文字化 なすこじ 2008年07月28日 02:33

            .macのファイルにしてキー割り当てでCtrl+F4に割り当てただけです。
            正規表現ライブラリは鬼車です。
            ライブラリのバージョンはv1.4.3でもv2.0.0 beta9でもOKでした。

            実行時のカーソル位置の問題ではないでしょうか?
            カーソル位置以降の文字列が対象となりますから、ターゲットの文字列より前にカーソルを移動して下さい。

            • [6738] Re5:英単語の先頭を大文字化、以降を小文字化 msk 2008年07月28日 13:34

              ▼ なすこじさん
              > .macのファイルにしてキー割り当てでCtrl+F4に割り当てただけです。
              > 正規表現ライブラリは鬼車です。
              > ライブラリのバージョンはv1.4.3でもv2.0.0 beta9でもOKでした。
              >
              > 実行時のカーソル位置の問題ではないでしょうか?
              > カーソル位置以降の文字列が対象となりますから、ターゲットの文字列より前にカーソルを移動して下さい。
              >

              処理できました。ありがとうございます。

              …ただ欲を言いますと、範囲指定した部分の英単語の先頭文字全てについて処理を行えるようにしたいのですが、それは可能ですか?(最初に質問の時に記載すべきでしたね、申し訳ないです)
              • [6739] Re6:英単語の先頭を大文字化、以降を小文字化 なすこじ 2008年07月29日 02:19

                ▼ mskさん
                > …ただ欲を言いますと、範囲指定した部分の英単語の先頭文字全てについて処理を行えるようにしたいのですが、それは可能ですか?(最初に質問の時に記載すべきでしたね、申し訳ないです)

                予想していた中で最も面倒なパターンです (^^;

                できます、の一言で終わらせるのも何なので作ってみました。
                キーマクロではもう無理なので今回はppaを使用しています。

                >>macro:430 を参照してください。
                • [6740] Re7:英単語の先頭を大文字化、以降を小文字化 msk 2008年07月30日 10:49

                  ▼ なすこじさん
                  > ▼ mskさん
                  > > …ただ欲を言いますと、範囲指定した部分の英単語の先頭文字全てについて処理を行えるようにしたいのですが、それは可能ですか?(最初に質問の時に記載すべきでしたね、申し訳ないです)
                  >
                  > 予想していた中で最も面倒なパターンです (^^;
                  >
                  > できます、の一言で終わらせるのも何なので作ってみました。
                  > キーマクロではもう無理なので今回はppaを使用しています。
                  >
                  > >>macro:430 を参照してください。

                  ありがとうございました!

                  単語の数が多いほど、処理に随分時間がかかってしまうんですね…。xyzzyやTeraPadのプラグインでできるように、単語数に関わらず一瞬で全て処理を終えるのって、難しいことなんですかね??
                  • [6741] Re8:英単語の先頭を大文字化、以降を小文字化 なすこじ 2008年07月30日 18:54

                    ▼ mskさん
                    > 単語の数が多いほど、処理に随分時間がかかってしまうんですね…。xyzzyやTeraPadのプラグインでできるように、単語数に関わらず一瞬で全て処理を終えるのって、難しいことなんですかね??

                    そんなに難しくはないですよ。上では回りくどい方法を取ってますが (^^;
                    ActivePerlをインストールすれば下記で簡単にできます。
                    ただ、矩形選択は不可なのと、単語の途中が選択されていてもお構いなしに選択部分をキャピタライズします。

                    # Capitalize.pls
                    $str = $Editor->GetSelectedString();
                    if( !$str ){ exit; }
                    $str =~ s/(\b)([a-zA-Z]+)(\b)/$1\u\L$2$3/g;
                    $Editor->InsText( $str );
                    • [6743] Re9:英単語の先頭を大文字化、以降を小文字化 なすこじ 2008年07月30日 19:25

                      選択範囲に全角英字があると変になるかも?と書きにきたらryojiさんがJScriptで書いてくれてますね。
                      Perlを入れる必要も無いのでjs版の方がお勧めです。

                      あと私の正規表現は変ですね (^^;
                      /(\w+)/\u\L$1/g で十分なのかな?
                    • [6744] Re9:英単語の先頭を大文字化、以降を小文字化 msk 2008年08月01日 16:46

                      ▼ なすこじさん
                      > ▼ mskさん
                      > > 単語の数が多いほど、処理に随分時間がかかってしまうんですね…。xyzzyやTeraPadのプラグインでできるように、単語数に関わらず一瞬で全て処理を終えるのって、難しいことなんですかね??
                      >
                      > そんなに難しくはないですよ。上では回りくどい方法を取ってますが (^^;
                      > ActivePerlをインストールすれば下記で簡単にできます。
                      > ただ、矩形選択は不可なのと、単語の途中が選択されていてもお構いなしに選択部分をキャピタライズします。
                      >
                      > # Capitalize.pls
                      > $str = $Editor->GetSelectedString();
                      > if( !$str ){ exit; }
                      > $str =~ s/(\b)([a-zA-Z]+)(\b)/$1\u\L$2$3/g;
                      > $Editor->InsText( $str );


                      ありがとうございます。どうしても、TeraPad(+プラグイン)を使っていた時と同様の処理時間を求めてしまい…。でも、それ以外の機能はsakuraの方が断然上なので、こちらでキャピタライズが即効性のあるものであればいいんですが…。
                  • [6742] Re8:英単語の先頭を大文字化、以降を小文字化 ryoji 2008年07月30日 18:57

                    下の例のように JScript の replace() を使うほうが高速になるかも…です。
                    IE5.5以上の環境なら動くと思います。

                    // Capitalize.js
                    if (Editor.IsTextSelected() == 1) {
                    var s = Editor.GetSelectedString(0);
                    s = s.replace(
                    /\w+/g,
                    function($0) {
                    return $0.substr(0, 1).toUpperCase() + $0.substr(1).toLowerCase();
                    }
                    );
                    Editor.InsText(s);
                    }

                    非選択や矩形選択のときは何もしていません。
                    必要なら適当に処理追加してみてください。(^^;
                    • [6745] Re9:英単語の先頭を大文字化、以降を小文字化 msk 2008年08月01日 16:48

                      ▼ ryoji様
                      > 下の例のように JScript の replace() を使うほうが高速になるかも…です。
                      > IE5.5以上の環境なら動くと思います。
                      >
                      > // Capitalize.js
                      > if (Editor.IsTextSelected() == 1) {
                      > var s = Editor.GetSelectedString(0);
                      > s = s.replace(
                      > /\w+/g,
                      > function($0) {
                      > return $0.substr(0, 1).toUpperCase() + $0.substr(1).toLowerCase();
                      > }
                      > );
                      > Editor.InsText(s);
                      > }
                      >
                      > 非選択や矩形選択のときは何もしていません。
                      > 必要なら適当に処理追加してみてください。(^^;


                      試してみました。確かに、こちらの方が明らかに処理が早いですね!自分が希望する高速処理のキャピタライズ機能が実装される日が来るまで(笑)、こちらを活用させて頂きます。

                      なすこじ様共々、ご回答ありがとうございました!
              • [6747] Re6:英単語の先頭を大文字化、以降を小文字化 すい 2008年08月16日 02:59

                >…ただ欲を言いますと、範囲指定した部分の英単語の先頭文字全てについて処理を行えるようにしたいのですが、それは可能ですか?(最初に質問の時に記載すべきでしたね、申し訳ないです)

                .MAC のキーボードマクロで可能ですね、別に処理内容のスマートさを求める必要ないなら。
                冗談のような力技かも、ですが、置換26個くらい並べても どうって事ないかと。
                ----------
                //キーボードマクロのファイル

                // 範囲選択してから実行する。
                // 選択範囲内の英単語の先頭を大文字に2文字目以降を小文字にする。

                // 先に全て小文字に変換する。
                S_ToLower(0); // 小文字

                // 英単語の先頭を大文字にする。
                // 148(10進数) = 1001.0100(2進数)
                // bit7:0=ファイル全体 / 1=選択範囲
                // bit4:置換ダイアログを自動的に閉じる
                // bit2:正規表現
                S_ReplaceAll('\ba','A',148); //
                S_ReplaceAll('\bb','B',148); //
                S_ReplaceAll('\bc','C',148); //
                S_ReplaceAll('\bd','D',148); //
                S_ReplaceAll('\be','E',148); //
                S_ReplaceAll('\bf','F',148); //
                S_ReplaceAll('\bg','G',148); //
                S_ReplaceAll('\bh','H',148); //
                S_ReplaceAll('\bi','I',148); //
                S_ReplaceAll('\bj','J',148); //
                S_ReplaceAll('\bk','K',148); //
                S_ReplaceAll('\bl','L',148); //
                S_ReplaceAll('\bm','M',148); //
                S_ReplaceAll('\bn','N',148); //
                S_ReplaceAll('\bo','O',148); //
                S_ReplaceAll('\bp','P',148); //
                S_ReplaceAll('\bq','Q',148); //
                S_ReplaceAll('\br','R',148); //
                S_ReplaceAll('\bs','S',148); //
                S_ReplaceAll('\bt','T',148); //
                S_ReplaceAll('\bu','U',148); //
                S_ReplaceAll('\bv','V',148); //
                S_ReplaceAll('\bw','W',148); //
                S_ReplaceAll('\bx','X',148); //
                S_ReplaceAll('\by','Y',148); //
                S_ReplaceAll('\bz','Z',148); //

                S_ReDraw(0); // 再描画