Macro/投稿/245

http://sakura.qp.land.to/?Macro%2F%C5%EA%B9%C6%2F245


Top > Macro > 投稿 > 245

HTML文字参照化

  • ページ: Macro/投稿
  • 作者: noname?
  • カテゴリー: js
  • 投稿日: 2018-11-19 (月) 02:19:03

メッセージ

カーソル右側の文字をHTMLの文字参照に置き換えるマクロです。
(「<」 => 「&#60;」)
テキスト選択中なら1文字ずつ全て変換します。

2バイト文字は文字コードUTF-8で出力します。
なので`charset="utf-8"`のHTMLじゃないと使えません。

filehtmlCharacterReference.js
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
/*******************************************
■HTML文字参照化マクロ
 
カーソル右側の文字をHTMLの文字参照に変換するマクロ
(「<」 => 「&#38;&#35;60;」)
テキスト選択中なら1文字ずつ全て変換
 
`ENTITY_HEX = true`なら16進数指定で出力
(「>」 => 「&#x3e;」)
 
2バイト文字は文字コードUTF-8で出力
なので`charset="utf-8"`のHTMLじゃないと使えない
*******************************************/
 
 
var ENTITY_HEX = false; //16進数値で出力?
 
var c_except;           //変換しない文字の指定
//  c_except = new RegExp('[a-z0-9]','i');
 
 
function characterReference(){
  var s=IsTextSelected();
  if(s==2){//矩形選択時は無効
    return false;
  }else if(s==0){//→←はUndoで文字の左側へカーソル戻すため
    Right(); Left_Sel();
  }
 
  var r='', w=GetSelectedString(0);
 
  for(var i=f=cc=0,c; i<w.length; i++){//基本的には文字コードに置き換えてるだけ
    if(c_except && w.charAt(i).match(c_except)){r+=w.charAt(i); continue}
    c=w.charCodeAt(i); f=c==10||c==13?(c==10&&cc==13?2:1):0; cc=c;//改行文字の扱いでゴチャついてる
    if(f!=2){r+='&#';
      if(ENTITY_HEX){
        var h=((c<0x10||(c>0xff&&c<0x1000))?'0':'')+c.toString(16);
        if(ENTITY_HEX!==true){h=h.toUpperCase()}//`ENTITY_HEX = 1` とかなら大文字化
        c='x'+h;
      }
      r+=c+';';
    }
    if(f){r+=w.charAt(i)}
  }
  InsText(r);
  s=r=w=null; return true;
}
 
if(Editor){characterReference()}
 


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

添付ファイル: filehtmlCharacterReference.js 49件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2018-11-19 (月) 02:25:55 (1114d)