/* ========================================================================== * 全角と半角の変換 * ========================================================================== */ /* ▼▼▼半角→全角用▼▼▼ */ //濁点(半角) var sonantHerf = 0xFF9E; //半濁点(半角) var maruHerf = 0xFF9F; //通常の変換表(半角→全角) var herfToFull = { //ア〜ン 0xFF71 : 0x30A2, 0xFF72 : 0x30A4, 0xFF73 : 0x30A6, 0xFF74 : 0x30A8, 0xFF75 : 0x30AA, 0xFF76 : 0x30AB, 0xFF77 : 0x30AD, 0xFF78 : 0x30AF, 0xFF79 : 0x30B1, 0xFF7A : 0x30B3, 0xFF7B : 0x30B5, 0xFF7C : 0x30B7, 0xFF7D : 0x30B9, 0xFF7E : 0x30BB, 0xFF7F : 0x30BD, 0xFF80 : 0x30BF, 0xFF81 : 0x30C1, 0xFF82 : 0x30C4, 0xFF83 : 0x30C6, 0xFF84 : 0x30C8, 0xFF85 : 0x30CA, 0xFF86 : 0x30CB, 0xFF87 : 0x30CC, 0xFF88 : 0x30CD, 0xFF89 : 0x30CE, 0xFF8A : 0x30CF, 0xFF8B : 0x30D2, 0xFF8C : 0x30D5, 0xFF8D : 0x30D8, 0xFF8E : 0x30DB, 0xFF8F : 0x30DE, 0xFF90 : 0x30DF, 0xFF91 : 0x30E0, 0xFF92 : 0x30E1, 0xFF93 : 0x30E2, 0xFF94 : 0x30E4, 0xFF95 : 0x30E6, 0xFF96 : 0x30E8, 0xFF97 : 0x30E9, 0xFF98 : 0x30EA, 0xFF99 : 0x30EB, 0xFF9A : 0x30EC, 0xFF9B : 0x30ED, 0xFF9C : 0x30EF, 0xFF66 : 0x30F2, 0xFF9D : 0x30F3, //ァ〜っ 0xFF67 : 0x30A1, 0xFF68 : 0x30A3, 0xFF69 : 0x30A5, 0xFF6A : 0x30A7, 0xFF6B : 0x30A9, 0xFF6C : 0x30E3, 0xFF6D : 0x30E5, 0xFF6E : 0x30E7, 0xFF6F : 0x30C3, //ー, ・, -, 0xFF70 : 0x30FC, 0xFF65 : 0x30FB, 0x2D : 0x2010, 0x2013 : 0x2015, //0〜9 0x30 : 0xFF10, 0x31 : 0xFF11, 0x32 : 0xFF12, 0x33 : 0xFF13, 0x34 : 0xFF14, 0x35 : 0xFF15, 0x36 : 0xFF16, 0x37 : 0xFF17, 0x38 : 0xFF18, 0x39 : 0xFF19, //A〜Z 0x41 : 0xFF21, 0x42 : 0xFF22, 0x43 : 0xFF23, 0x44 : 0xFF24, 0x45 : 0xFF25, 0x46 : 0xFF26, 0x47 : 0xFF27, 0x48 : 0xFF28, 0x49 : 0xFF29, 0x4A : 0xFF2A, 0x4B : 0xFF2B, 0x4C : 0xFF2C, 0x4D : 0xFF2D, 0x4E : 0xFF2E, 0x4F : 0xFF2F, 0x50 : 0xFF30, 0x51 : 0xFF31, 0x52 : 0xFF32, 0x53 : 0xFF33, 0x54 : 0xFF34, 0x55 : 0xFF35, 0x56 : 0xFF36, 0x57 : 0xFF37, 0x58 : 0xFF38, 0x59 : 0xFF39, 0x5A : 0xFF3A, //a〜z 0x61 : 0xFF41, 0x62 : 0xFF42, 0x63 : 0xFF43, 0x64 : 0xFF44, 0x65 : 0xFF45, 0x66 : 0xFF46, 0x67 : 0xFF47, 0x68 : 0xFF48, 0x69 : 0xFF49, 0x6A : 0xFF4A, 0x6B : 0xFF4B, 0x6C : 0xFF4C, 0x6D : 0xFF4D, 0x6E : 0xFF4E, 0x6F : 0xFF4F, 0x70 : 0xFF50, 0x71 : 0xFF51, 0x72 : 0xFF52, 0x73 : 0xFF53, 0x74 : 0xFF54, 0x75 : 0xFF55, 0x76 : 0xFF56, 0x77 : 0xFF57, 0x78 : 0xFF58, 0x79 : 0xFF59, 0x7A : 0xFF5A, //スペース 0x20 : 0x3000, //濁点、半濁点 0xFF9E : 0x309B, 0xFF9F : 0x309C }; //濁点の変換表(半角→全角) var sonantHerfToFull = { //カ 0xFF76 : 0x30AC, 0xFF77 : 0x30AE, 0xFF78 : 0x30B0, 0xFF79 : 0x30B2, 0xFF7A : 0x30B4, //サ 0xFF7B : 0x30B6, 0xFF7C : 0x30B8, 0xFF7D : 0x30BA, 0xFF7E : 0x30BC, 0xFF7F : 0x30BE, //タ 0xFF80 : 0x30C0, 0xFF81 : 0x30C2, 0xFF82 : 0x30C5, 0xFF83 : 0x30C7, 0xFF84 : 0x30C9, //ハ 0xFF8A : 0x30D0, 0xFF8B : 0x30D3, 0xFF8C : 0x30D6, 0xFF8D : 0x30D9, 0xFF8E : 0x30DC }; //半濁点の変換表(半角→全角) var maruHerfToFull = { //ハ 0xFF8A : 0x30D1, 0xFF8B : 0x30D4, 0xFF8C : 0x30D7, 0xFF8D : 0x30DA, 0xFF8E : 0x30DD }; /* ▲▲▲半角→全角用▲▲▲ */ /* ▼▼▼全角→半角用▼▼▼ */ //通常の変換表(全角→半角) var fullToHerf = { //ア〜ン 0x30A2 : 0xFF71, 0x30A4 : 0xFF72, 0x30A6 : 0xFF73, 0x30A8 : 0xFF74, 0x30AA : 0xFF75, 0x30AB : 0xFF76, 0x30AD : 0xFF77, 0x30AF : 0xFF78, 0x30B1 : 0xFF79, 0x30B3 : 0xFF7A, 0x30B5 : 0xFF7B, 0x30B7 : 0xFF7C, 0x30B9 : 0xFF7D, 0x30BB : 0xFF7E, 0x30BD : 0xFF7F, 0x30BF : 0xFF80, 0x30C1 : 0xFF81, 0x30C4 : 0xFF82, 0x30C6 : 0xFF83, 0x30C8 : 0xFF84, 0x30CA : 0xFF85, 0x30CB : 0xFF86, 0x30CC : 0xFF87, 0x30CD : 0xFF88, 0x30CE : 0xFF89, 0x30CF : 0xFF8A, 0x30D2 : 0xFF8B, 0x30D5 : 0xFF8C, 0x30D8 : 0xFF8D, 0x30DB : 0xFF8E, 0x30DE : 0xFF8F, 0x30DF : 0xFF90, 0x30E0 : 0xFF91, 0x30E1 : 0xFF92, 0x30E2 : 0xFF93, 0x30E4 : 0xFF94, 0x30E6 : 0xFF95, 0x30E8 : 0xFF96, 0x30E9 : 0xFF97, 0x30EA : 0xFF98, 0x30EB : 0xFF99, 0x30EC : 0xFF9A, 0x30ED : 0xFF9B, 0x30EF : 0xFF9C, 0x30F2 : 0xFF66, 0x30F3 : 0xFF9D, //ァ〜ッ 0x30A1 : 0xFF67, 0x30A3 : 0xFF68, 0x30A5 : 0xFF69, 0x30A7 : 0xFF6A, 0x30A9 : 0xFF6B, 0x30E3 : 0xFF6C, 0x30E5 : 0xFF6D, 0x30E7 : 0xFF6E, 0x30C3 : 0xFF6F, //ー, ・, -, 0x30FC : 0xFF70, 0x30FB : 0xFF65, 0x2010 : 0x2D, 0x2015 : 0x2013, //0〜9 0xFF10 : 0x30, 0xFF11 : 0x31, 0xFF12 : 0x32, 0xFF13 : 0x33, 0xFF14 : 0x34, 0xFF15 : 0x35, 0xFF16 : 0x36, 0xFF17 : 0x37, 0xFF18 : 0x38, 0xFF19 : 0x39, //A〜Z 0xFF21 : 0x41, 0xFF22 : 0x42, 0xFF23 : 0x43, 0xFF24 : 0x44, 0xFF25 : 0x45, 0xFF26 : 0x46, 0xFF27 : 0x47, 0xFF28 : 0x48, 0xFF29 : 0x49, 0xFF2A : 0x4A, 0xFF2B : 0x4B, 0xFF2C : 0x4C, 0xFF2D : 0x4D, 0xFF2E : 0x4E, 0xFF2F : 0x4F, 0xFF30 : 0x50, 0xFF31 : 0x51, 0xFF32 : 0x52, 0xFF33 : 0x53, 0xFF34 : 0x54, 0xFF35 : 0x55, 0xFF36 : 0x56, 0xFF37 : 0x57, 0xFF38 : 0x58, 0xFF39 : 0x59, 0xFF3A : 0x5A, //a〜z 0xFF41 : 0x61, 0xFF42 : 0x62, 0xFF43 : 0x63, 0xFF44 : 0x64, 0xFF45 : 0x65, 0xFF46 : 0x66, 0xFF47 : 0x67, 0xFF48 : 0x68, 0xFF49 : 0x69, 0xFF4A : 0x6A, 0xFF4B : 0x6B, 0xFF4C : 0x6C, 0xFF4D : 0x6D, 0xFF4E : 0x6E, 0xFF4F : 0x6F, 0xFF50 : 0x70, 0xFF51 : 0x71, 0xFF52 : 0x72, 0xFF53 : 0x73, 0xFF54 : 0x74, 0xFF55 : 0x75, 0xFF56 : 0x76, 0xFF57 : 0x77, 0xFF58 : 0x78, 0xFF59 : 0x79, 0xFF5A : 0x7A, //スペース 0x3000 : 0x20, //濁点、半濁点 0x309B : 0xFF9E, 0x309C : 0xFF9F, //ヰ(イ)→イ、ヱ(エ)→エ、ヵ(カ)→カ、ヶ(ケ)→ケ、ヮ(ワ)→ワ 0x30F0 : 0xFF72, 0x30F1 : 0xFF74, 0x30F5 : 0xFF76, 0x30F6 : 0xFF79, 0x30EE : 0xFF9C }; //濁点の変換表(全角→半角) var sonantFullToHerf = { //ヴ 0x30F4 : 0xFF73, //ガ〜ゴ 0x30AC : 0xFF76, 0x30AE : 0xFF77, 0x30B0 : 0xFF78, 0x30B2 : 0xFF79, 0x30B4 : 0xFF7A, //ザ〜ゾ 0x30B6 : 0xFF7B, 0x30B8 : 0xFF7C, 0x30BA : 0xFF7D, 0x30BC : 0xFF7E, 0x30BE : 0xFF7F, //ダ〜ド 0x30C0 : 0xFF80, 0x30C2 : 0xFF81, 0x30C5 : 0xFF82, 0x30C7 : 0xFF83, 0x30C9 : 0xFF84, //バ〜ボ 0x30D0 : 0xFF8A, 0x30D3 : 0xFF8B, 0x30D6 : 0xFF8C, 0x30D9 : 0xFF8D, 0x30DC : 0xFF8E }; //半濁点の変換表(全角→半角) var maruFullToHerf = { //パ〜ポ 0x30D1 : 0xFF8A, 0x30D4 : 0xFF8B, 0x30D7 : 0xFF8C, 0x30DA : 0xFF8D, 0x30DD : 0xFF8E }; /* ▲▲▲全角→半角用▲▲▲ */ //**********************// // 半角→全角変換処理 // //**********************// function convHerfToFull(str) { if (!str || str.length <= 0) { return str; } var conved = new Array(); for(i = 0, len=str.length; i < len; i++) { //1文字取り出す c = str.charCodeAt(i); //濁点のチェック if (c == sonantHerf && i > 0) { //一個前の文字を取り出す beforeC = str.charCodeAt(i - 1); //濁点全角に変換 convedBeforeC = sonantHerfToFull[beforeC]; if (convedBeforeC) { //変換できたら、一個前を削除して、濁点全角を追加 conved.pop(); conved.push(convedBeforeC); continue; } } //半濁点のチェック else if (c == maruHerf && i > 0) { //一個前の文字を取り出す beforeC = str.charCodeAt(i - 1); //濁点全角に変換 convedBeforeC = maruHerfToFull[beforeC]; if (convedBeforeC) { //変換できたら、一個前を削除して、濁点全角を追加 conved.pop(); conved.push(convedBeforeC); continue; } } //濁点・半濁点ではない文字列は普通に変換 if (c in herfToFull) { conved.push(herfToFull[c]); } else { conved.push(c); } }; return String.fromCharCode.apply(null, conved); } //**********************// // 全角→半角変換処理 // //**********************// function convFullToHerf(str, maxlen) { if (!str || str.length <= 0) { return str; } var conved = new Array(); for(i = 0, len=str.length; i < len; i++) { //1文字取り出す c = str.charCodeAt(i); //濁点のチェック if (c in sonantFullToHerf) { conved.push(sonantFullToHerf[c]); conved.push(0xFF9E); continue; } //半濁点のチェック else if (c in maruFullToHerf) { conved.push(maruFullToHerf[c]); conved.push(0xFF9F); continue; } //濁点・半濁点ではない文字列は普通に変換 if (c in fullToHerf) { conved.push(fullToHerf[c]); } else { conved.push(c); } }; //桁あふれ分削除 if (conved.length > maxlen) { conved.length = maxlen; alert( (maxlen+1) + "桁以上の文字は削除されます。"); } return String.fromCharCode.apply(null, conved); }