テキストエディタ Mery part4at SOFTWARE
テキストエディタ Mery part4 - 暇つぶし2ch309:300
15/05/23 22:12:23.28 tjsBxM4wq
>>301 仕組みは分からないけどちゃんとエスケープできた。ありがと。
文字数に変化なければ置換後もカーソルがビクとも動かないのが結構感動。
あとはダイアログへの入力履歴と『x件置換しました』が出れば完璧だけど、
Mery本体が全置換前カーソル位置を記憶する方が早いかな。

xPos = document.selection.GetActivePointX( mePosLogical );//初期カーソル水平方向の位置を取得
yPos = document.selection.GetActivePointy( mePosLogical );//初期カーソル垂直方向の位置を取得
var sX = ScrollX;//初期スクロール水平方向の位置を取得
var sY = ScrollY;//初期スクロール垂直方向の位置を取得
//置換対象文字列と置換文字列を区切り文字"/"でつなげた文字列を取得する
var inp = window.prompt("全文一括置換!" ,"置換対象文字列/置換文字列");
//キャンセルボタンが押されるか、空白の場合はマクロを終了する
if (inp == "")
quit();
n = inp.length;// データ長の取得
var p = inp.indexOf( "/" );// スラッシュ位置の取得
if( p == 0 )// p が 0 のときは、スラッシュがデータの先頭位置なので終了
quit();
var w = inp.substring( 0, p );//スラッシュの前までの部分文字列を取得=置換対象文字列
var x = inp.substring( p+1, n );//スラッシュ以降の部分文字列を取得=置換文字列
document.selection.SelectAll();//全文を選択する
//
var unesc = function(s){
var l = s;
l = l.replace(/\\n/g, '\n').replace(/\\t/g, '\t').replace(/\\r/g, '\r');
return l;
};
//正規表現で一括置換する オプション=mg
document.selection.Text = document.selection.Text.replace(new RegExp(w, "mg"), unesc(x));
document.selection.SetActivePoint( mePosLogical, xPos, yPos );//元のカーソル位置を戻す
ScrollX = sX;//元のスクロール位置に戻す
ScrollY = sY;//元のスクロール位置に戻す


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch