unescape() | Underscore JS 日本語リファレンス

引数の文字列に「<」「>」など文字実態参照があるものは通常表記に置き換えられる。

■使用例

var str = "kokia & 上野洋子";
// "Kokia & 上野洋子"
console.log(_.unescape(str) );

■内部構造

_.unescape = createEscaper(unescapeMap);
// _.invert() は key値を値に値をkey値に入れ替える関数。
var unescapeMap = _.invert(escapeMap);
var escapeMap = {
	"&" : "&",
	"<" : "&lt;",
	">" : "&gt;",
	'"' : "&quot;",
	"'" : "&#x27;",
	"`" : "&#x60;"
};
var createEscaper = function(map) {
	
    var escaper = function(match) {
// return escapeMap[match]    	
      return map[match];
    };

    var source = "(?:" + _.keys(map).join("|") + ")";
// testRegexp = /(?:&amp;|&lt;|&gt;|&quot;|&#x27;|&#x60;)/;
    var testRegexp = RegExp(source);
    
// replaceRegexp = /(?:&amp;|&lt;|&gt;|&quot;|&#x27;|&#x60;)/g;
    var replaceRegexp = RegExp(source, "g");
 
// _.unescape() の引数はこの返される関数の引数。   
    return function(string) {
      string = string == null ? "" : "" + string;

// testRegexp.test(string); が false なら _.unescape() の引数は何もされずに返る。  
// testRegexp.test(string); が true なら マッチした文字が escaper() に渡されマッチした文字が置き換えられる。
// CMS tool のエラーのためリプレイスの表記少し変えています。  
      return testRegexp.test(string) ? string.r(e)place(replaceRegexp, escaper) : string;
    };
};

このページのトップへ戻る