2010/12/31

flip tableをやってみる

flipTableっていう、文字を反転させて表示させるのを見かけた。
面白そうなので、自分でも作ってみました。
flipってのは、ひっくり返るってことです。
例えば、pはdにmはwになります。


String.prototype.flipString = function() {

// 変換対象の長さ
var length = this.length;
// 結果文字列を作るための配列
var ar = new Array(length);
// 変換文字用テーブル
var flipTable = {
 a : '\u0250',
 b : 'q',
 c : '\u0254', 
 d : 'p',
 e : '\u01DD',
 f : '\u025F', 
 g : '\u0183',
 h : '\u0265',
 i : '\u0131',
 j : '\u027E',
 k : '\u029E',
 m : '\u026F',
 n : 'u',
 r : '\u0279',
 t : '\u0287',
 v : '\u028C',
 w : '\u028D',
 y : '\u028E',
 '.' : '\u02D9',
 '[' : ']',
 '(' : ')',
 '{' : '}',
 '?' : '\u00BF',
 '!' : '\u00A1',
 "\'" : ',',
 '<' : '>',
 '_' : '\u203E',
 '\u203F' : '\u2040',
 '\u2045' : '\u2046',
 '\u2234' : '\u2235',
 '\r' : '\n'
}
// 処理対象文字列のインデックスカウンタ
var i;
// 処理対象文字
var chara;
// 処理対象文字列
var last = length - 1;

// 変換処理
for (i = 0; i < length; i++) {
 chara = this.charAt(i);
 ar[last - i] = flipTable[chara] || chara;
}

return ar.join('');
}
こんな感じで呼び出せます。

alert("hoge".flipString());