Comment detail

文字変換表に基く文字列の変換 (Nested Flatten)
(2)。対応する置換文字が無い(set2のほうが短い)場合は削除。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
String.prototype.tr = function(expand){
  return function(set1, set2){
    var s = [], i = -1, c, x;
    for(set1 = expand(set1), set2 = expand(set2 || ''); c = this.charAt(++i);)
      s[i] = ~(x = set1.indexOf(c)) ? set2.charAt(x) : c;
    return s.join('');
  };
}(function(r, f){
  return function(set){ return set.indexOf('-') > 0 ? set.replace(r, f) : set };
}(/(.)-(.)/g, function(_, a, z){
  var s = [], i = -1;
  for(a = a.charCodeAt(0), z = z.charCodeAt(0); a <= z;) s[++i] = a++;
  return String.fromCharCode.apply(null, s);
}));

//'typewriter'.tr('a-z', 'A-P') => 'PEIE'
//'typewriter'.tr('write')      => 'yp'

Index

Feed

Other

Link

Pathtraq

loading...