LotusNotesな日々IBM社のLotusNotesに関係する何かを日々語ってるようなきがしないでもないブログです。 

スポンサーサイト

   ↑  --/--/-- (--)  カテゴリー: スポンサー広告
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

(記事編集) http://mesosune.blog123.fc2.com/?overture" target="_new

--/--/-- | Comment (-) | HOME | ↑ ページ先頭へ |

【JavaScript】全角英数は半角英数に、半角カナは全角カナに変換する

   ↑  2012/01/26 (木)  カテゴリー: JavaScript/CSS
バックグラウンドでJavaライブラリやLotusScriptを使用する方法もあるのですが、
今回はすべて純粋なJavaScriptでやってみます。
英数は比較的簡単で、

全角英数記号の文字コードから65248を引くと半角英数記号の文字コードになるというUnicodeの仕様を利用します。
(全角英数の文字コードから65248個前が半角英数の文字コードで、半角英数の文字コードから65248個後が全角英数の文字コード)

// 半角にしたい
str.replace(/[A-Za-z0-9]/g, function(s) {
return String.fromCharCode(s.charCodeAt(0) - 65248);
});


// 全角にしたい
str.replace(/[A-Za-z0-9]/g, function(s) {
return String.fromCharCode(s.charCodeAt(0) + 65248);
});


となります。

半角カナの文字コードは65377~65439の間で、
全角カナの文字コードは12449~12538の間ですが、
半角カナ変換は英数のように1:1になっておらず、
濁点などの対応が実に面倒なので1文字づつ配列を使って置換してみます。

// 全角にしたい
function HankakuKanaToZenkaku(src){

// 全角カナの文字テーブル
var fullSizeCharacter = new Array(
"。", "「", "」", "、", "・", "ヲ", "ァ", "ィ", "ゥ", "ェ",
"ォ", "ャ", "ュ", "ョ", "ッ", "ー", "ア", "イ", "ウ", "エ",
"オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ",
"ソ", "タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ",
"ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ",
"モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ",
"ン", "゛", "゜"
);

var str = new String;
var len = src.length;
for( i = 0; i < len ; i++ ) {
var c = src.charCodeAt(i);
if( c >= 65377 && c <= 65439 ){
code = fullSizeCharacter[c - 65377];
if(i < len - 1){
next = src.charCodeAt(i+1);
// 次の文字が"濁音"
// カタカナで「ウ」(ヴの置換)
if(next == 65438 && c == 65395){
code = "ヴ";
i++;
// 次の文字が"濁音"
// カタカナで「カ」~「ト」であるか判別する
// カタカナで「ハ」~「ホ」であるか判別する
}else if(next == 65438 && ( (c >= 65398 && c <= 65412) || ( c >= 65418 && c <= 65422 ) )){
code = String.fromCharCode(code.charCodeAt(0)+1);
i++;
// 次の文字が"半濁音"
// カタカナで「ハ」~「ホ」であるか判別する
}else if (next == 65439 && ( c >= 65418 && c <= 65422 )){
code = String.fromCharCode(code.charCodeAt(0)+2);
i++;
}
}
str += code;
}else{
str += src.charAt(i);
}
}
return str;
}


半角カナにするのは
使うことがほぼ無いと思いますので
省略させていただきます。
スポンサーサイト

(記事編集) http://mesosune.blog123.fc2.com/blog-entry-371.html

2012/01/26 | Comment (0) | Trackback (0) | HOME | ↑ ページ先頭へ |

Comment

コメントを投稿する 記事: 【JavaScript】全角英数は半角英数に、半角カナは全角カナに変換する

お気軽にコメントをぞうぞ。
非公開 (管理人のみ閲覧可能なコメント) にしたい場合には、ロック にチェックを入れてください。

  任意 : 後から修正や削除ができます。
  非公開コメントとして投稿する。(管理人にのみ公開)
 

Trackback

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。