「タグの外側(内側)だけ置換」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
手石 (トーク | 投稿記録)
ページの作成:「// replaceOneside.js<br> // 選択範囲のタグ("<"と">")の外側(または内側)だけを対象として置換します。<br> // reg = /.*/, replaceTo = ...」
 
手石 (トーク | 投稿記録)
編集の要約なし
1行目: 1行目:
// replaceOneside.js<br>
// replaceOneside.js<br>
// 選択範囲のタグ("<"と">")の外側(または内側)だけを対象として置換します。<br>
// 選択範囲のタグ("<"と">")の外側(または内側)だけを対象として置換します。<br>
// reg = /.*/, replaceTo = "", rep.INSIDE のとき、タグの除去になります。<br>
// reg = /.*/, replaceTo = "", repside.INSIDE のとき、タグの除去になります。<br>
// 2013/01/11<br>
// 2013/01/11<br>
<br>
<br>

2013年1月13日 (日) 15:40時点における版

// replaceOneside.js
// 選択範囲のタグ("<"と">")の外側(または内側)だけを対象として置換します。
// reg = /.*/, replaceTo = "", repside.INSIDE のとき、タグの除去になります。
// 2013/01/11

var str = Editor.ActiveDocument.Selection.Text
var reg = new RegExp( ".*", "ig" );
var replaceTo = "";
var repside = { OUTSIDE : true, INSIDE : false }
str = replaceOneside( str, reg, replaceTo, repside.OUTSIDE );
Editor.ActiveDocument.Selection.Text = str;

function replaceOneside( str, reg, rep, repOutside ) {
// 返り値:文字列。
// str:置換する文字列。
// reg:置換前パターン(文字列または正規表現)。
// rep:置換後文字列。
// repOutside:タグの外側を置換するとき true。falseのときは内側。
    if ( repOutside == undefined ) { repOutside = false };
    var tag_simple = "<[^>\n]*>";
    var others = "[^<]+";
    if ( repOutside ) {
        others = "(" + others + ")";
    } else {
        tag_simple = "(" + tag_simple + ")";
    }
    var regex = new RegExp( [ tag_simple, others ].join( "|" ), "ig" )
    return str.replace( regex, func );
    function func( s0, s1 ) { return ( s1 === undefined ) ? s0 : s1.replace( reg, rep ) }
};
スポンサーリンク