置換パターン://フラグ
置換後文字列:
function ( $0, $1, $2, $3 ... ){ //
$0 は一致文字列、
$1, $2, $3 ... はサブマッチ文字列
Clipboard の Text を
/
置換前に
0文字:
width:
height:
ClipboardのTextの
スクリプトの
コピー文(クリップボード)の置換
クリップボードにある(コピーされている)文字列を、置換する。
( IE 以外では、複数行テキスト入力欄中の置換は、可能。)
● 使い方:
[置換パターン] 入力欄に、正規表現で、置換パターンを入力する。
フラグ i g m は、その横の小さな入力欄へ入れる。
[置換後文字列] 入力欄に、置換後の(挿入される)文字列を入力する。
横の □\エスケープ チェックは、チェックあれば、
置換後文字列中の \ をエスケープの標しとする。例えば、\n や \x0A や
\u000A は改行(LF)文字になる。チェックを外すと、\ はそれそのもの。
この文字列中で、$& $1 などは、一致やサブマッチの文字列に置き換わる。
□置換関数使用 チェックを付けると、
置換関数のスクリプト入力欄を出す。[置換後文字列]入力欄は無効となる。
置換関数のスクリプト入力欄
一致文字列に複雑な処理をしたい場合などに使用する。この中でまた、置換
(replace) などの正規表現を使った処理も出来る。
ここで、返した(return)文字列が、一致した文字列に置き換わる。
( 何も返さないと大体は、undefined の文字が入るが、IE では、空文字を
返した事になるようである。IE 9 は、undefined になるらしい。)
g フラグを付けてあるなら、一致箇所が現れる度に、この関数が呼び出される。
1つ目の引数には、一致した文字列が入っていて、以降には、サブマッチ文字列
が入っている。引数には、一応、10個まで、$0~$9 と名前を付けた。
$0 が一致文字列で、$1 が1つ目のサブマッチ。
( 引数の個数は、arguments.length だが、サブマッチ数より大きい。
最後のサブマッチの次(arguments.length-2)には、一致箇所の index が
入っていて、最後の引数(arguments.length-1)には、input (対象の文字列)
が入っている。)
( これらは、RegExp のプロパティからも得られる。この RegExp からの情報を
用いる場合、関数中で正規表現が関わるメソッドを使うなら、メソッドの
使用で、RegExp のプロパティが変化する前に、取って置く必要がある。)
[置換] ボタンを押すと、実行する。
クリップボード中の文字列は、新しい文字列に置き換えられる。
但し、元の文字列が、置換パターンに一致しない場合は、何もしない事にする。
また、[置換パターン] 入力欄が、空の時は、
クリップボード中の文字列の有無、文字数を表示する。
( IE 以外のブラウザでは、このボタンは使用不能にしている。)
[戻す] ボタンは、置換前に取得していたクリップボードのテキストを、
クリップボードへ戻す。
( 戻せるのは、直前のそれへだけで、遡って戻す事は出来ない。
何度ボタンを押しても、同じテキストが送られるのみ。)
置換を行っているのは、JavaScript なので、その正規表現や、置換後の特殊文字など
については、JavaScript についての解説などを参照の事。
エディタの置換の正規表現の、複数行をまたぐ場合などが、どうにも理解が難しくて、
その代用に作成した。エディタ上で、範囲選択しコピー、こちらで置換し、
エディタへ戻って貼り付ける、という手順である。
● Clipboard テキストの複数行入力欄
ClipboardのTextの[表示▽] ボタンを押すと、
クリップボードのテキストを、この入力欄に入れる。
但し、設定上限(多分 2000 文字にしてある)以上は、切る。( 文字数制限の
チェックを外せば、全て入れる。)
[表示▲] ボタンを、もう一度押すと、テキスト欄を、隠す。
IE 以外のブラウザでは、このボタンはただ、テキスト入力欄の表示を切り替える。
また最初から、この欄を表示状態にしている。
これは、このテキスト欄で、簡単な加工をして、それをまた、クリップボードへ戻す、
といった事を想定したものである。( 長文や複雑な編集なら、入力に難のある
ブラウザのテキスト欄など使わず、エディタでした方が楽だろう。)
[送る] ボタンで、
このテキスト欄中の文字列を、クリップボードへコピーする。
(キー操作 [Ctrl]+ [A]→[C] で出来る事ではある。)
IE 以外では、SWF(Flash)を使い、コピーする。
( Flash の ExternalInterface が有効でない場合は、使用できない。
ローカルでは、設定が必要。)
[再取得] ボタンは、
クリップボードから、テキストを再び取得し、このテキスト欄へ貼り付ける。
[表示▽] ボタンを押して、このテキスト欄を表示した時、
同時に、クリップボード内容を、ここへ貼り付けているが、
ここの表示中に、クリップボードを変更した時に、使用する。
ここの [置換] ボタンは、
このテキスト欄中の文字列を、対象として置換する。
使うパターン、置換後文字列などは、上の欄で設定する。
IE 以外では、このテキスト欄中の置換のみ実行可能。
※ テキスト欄(TextArea)中での置換に改行が関わると、混乱する事がある。
\n を出力すると、\r\n になったり、\n を置換しても、その数は減らない等。
( この時、置換後の文字数は、合わない。)
● スクリプト入力欄
スクリプト[入力▽] ボタンを押すと、ここを表示する。再度押すと隠す。
function(str){ が、グレイでない時、ここは、
クリップボードのテキストを受け取り、クリップボードへ文字列を返す関数である。
str は、クリップボードから得た文字列の変数で、return した文字列が、
クリップボードへ送られる。
実行は、[送る] ボタンで。
この入力欄は、上の他の入力欄群とは関係がない。
function(str){ が、グレイの時は、
上の様な関数ではなく、ただ、スクリプトを実行する。
( 関数ではないので、引数 str は無く、return 文はエラーになる。)
□Clipboardとは関係なく[実行] のチェックで、
このモードの切り替えになる。IE 以外では、上の関数のモードは無効。
[実行] ボタンを押すと、欄に記述したスクリプトを実行する。
また、この欄では、[Ctrl]+[Enter] で実行可能。
( 上の関数のモードでは、キーで実行できるようにはしてない。)
結果(スクリプトの最後に評価された式の値) は、ここの下に表示する。
value: ----- の下に表示するのが、値。
上段に、type, constructor を示す。他に length あればそれも。
( constructor は、その関数の文から、名前と引数部分を取り出したのだが、
場合によっては、間違って切り出すかも知れない。)
下の幾つかのチェックなど
□Clipboardへ 結果の(文字列化した)値を、Clipboard へ送り、
窓の中に表示しない。
IE 以外では、SWF(Flash)を使い、コピーするので、チェック時には、
[実行] ボタンを取り替えている。
( Flash の ExternalInterface が有効でない場合は、使用できない。
ローカルでは、設定が必要。)
□展開 値のメンバーを列挙して調べる
以下、この展開チェック時に、
□分類 メンバーを、型などで、まとめる。
□並替 メンバーを、その名前順に並べる。
□並替2 名前順に加え、object は、コンストラクタ名順に並べる。
[ ]字(制限) メンバーの値表示の、字数制限。
この展開時は、../valDetail/eval_detail.js を使っている。
( 移動時は、このスクリプトファイルのパスの設定変更が必要。)
この実行結果の詳細を調べるスクリプトは、少し異質で、余計かとも思い、
ここからは独立させ別のものとしたので、削除した方がよいかも知れない。
● その他
rplCBTxt.js は、設定変更用のファイル。
HTA の時、初期時の窓のサイズを設定する変数あり。
また、主要でない部分の表示の出し入れでの、窓の高さ調節には、環境に合わせて
補助の変数の値の変更が必要。
rplCBTxt.css, rplCBTxt_ie.css, rplCBTxt_chrome.css
スタイル指定用ファイル。_chrome は、Chrome でフォントが monospace の所で、
同じ、1em でも文字サイズが小さくなるので、専用のを用意した。
幾つかの設定用変数以上の調整や変更、バグ修正などは、直接にソースの書き換えを。
width:[ ] height:[ ] の入力欄は、複数行テキスト入力欄のサイズ変更用。
欄中で [Enter] を押すと設定する。全てのテキスト入力欄を、同じに設定する。
( IE と、Opera で表示。)
クリップボード中のテキストに、\0(NULL文字)が文字として入っている場合、
その位置までのテキストしか得られず、また置換後のテキストの中に、\0 を入れて
クリップボードへ渡す事も出来ない。( スクリプトの中では、\0 は文字の一つだが、
IE の clipboardData は、\0 をそのようには扱ってくれない。)(勿論、\0 など
得たとしても、ブラウザ上で表示出来ない。が、スクリプト中では扱える。)
※ と書いたのは、間違い。
確かに、[貼り付け]ても、clipboardData.getData("text") しても、\0 までの
テキストしか得られない。が、.setData("text", "~\0~") は、為されている。
ただ貼り付け側で無視している(或いは、\0 で終わる文字列として取得している)
ので、コピーされてないように見える、という事らしい。
( [スクリプト用 ActiveX DLL プログラム]→クリップボードの監視とその通知
の readme.hta で、監視を[開始]し、.setData してみると、テスト出来る。)
( .setData("text", "\0") とすると、クリップボードの文字列のサイズは、
4 バイト~unicodeで、\0 2つ~で、.setData("text", "")だと 2 バイト。)
● 修正履歴
2012年1月7日 作成
2012年2月5日
置換関数を使えるようにする等した。
2012年2月下旬
eval_detail.js を追加し、それから「値の見分」が派生(別物として独立)。
クリップボードに文字がない時も、置換出来るように変更。
readme.txt に書いていた説明を、こちらの中に移した。
名前などを少し変更した。
2012年3月3日
Chrome 用の CSS ファイルを作成。
eval_detail.js の取り込み方を変更。
2012年3月15日
IE 以外で、クリップボード側へのコピーを行う SWF を加えた。
2012年3月22日
説明の間違いの訂正。