ショコラ
JavaScript で半角⇔全角に変換するには?
昔作った JavaScript の半角⇔全角変換テーブル(ソースの henkan_table
変数)。
このまま腐らせるのももったいなので HTA でサンプルプログラムを作ってみました。
もっさん先輩
こちらのリンクを右クリックしてファイルをダウンロードできます。
https://answorz.com/5086/henkan.hta
スクリプトの説明
<!DOCTYPE html>
<html lang="ja">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta charset="utf-8">
<title>半角全角変換</title>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.1/dist/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.0/dist/semantic.min.css">
<script src="https://cdn.jsdelivr.net/npm/fomantic-ui@2.9.0/dist/semantic.min.js"></script>
<hta:application id="hta"/>
<script>
var henkan_table = {
'ヴ' :'ヴ',
'ガ' :'ガ',
'ギ' :'ギ',
'グ' :'グ',
'ゲ' :'ゲ',
'ゴ' :'ゴ',
'ザ' :'ザ',
'ジ' :'ジ',
'ズ' :'ズ',
'ゼ' :'ゼ',
'ゾ' :'ゾ',
'ダ' :'ダ',
'ヂ' :'ヂ',
'ヅ' :'ヅ',
'デ' :'デ',
'ド' :'ド',
'バ' :'バ',
'パ' :'パ',
'ビ' :'ビ',
'ピ' :'ピ',
'ブ' :'ブ',
'プ' :'プ',
'ベ' :'ベ',
'ペ' :'ペ',
'ボ' :'ボ',
'ポ' :'ポ',
' ' :' ',
'!' :'!',
'#' :'#',
'$' :'$',
'%' :'%',
'&' :'&',
'(' :'(',
')' :')',
'*' :'*',
'+' :'+',
',' :',',
'-' :'-',
'.' :'.',
'/' :'/',
'0' :'0',
'1' :'1',
'2' :'2',
'3' :'3',
'4' :'4',
'5' :'5',
'6' :'6',
'7' :'7',
'8' :'8',
'9' :'9',
':' :':',
';' :';',
'<' :'<',
'=' :'=',
'>' :'>',
'?' :'?',
'@' :'@',
'A' :'A',
'B' :'B',
'C' :'C',
'D' :'D',
'E' :'E',
'F' :'F',
'G' :'G',
'H' :'H',
'I' :'I',
'J' :'J',
'K' :'K',
'L' :'L',
'M' :'M',
'N' :'N',
'O' :'O',
'P' :'P',
'Q' :'Q',
'R' :'R',
'S' :'S',
'T' :'T',
'U' :'U',
'V' :'V',
'W' :'W',
'X' :'X',
'Y' :'Y',
'Z' :'Z',
'[' :'[',
'"' :'”',
'\'' :'’',
'\\' :'¥',
']' :']',
'^' :'^',
'_' :'_',
'`' :'‘',
'a' :'a',
'b' :'b',
'c' :'c',
'd' :'d',
'e' :'e',
'f' :'f',
'g' :'g',
'h' :'h',
'i' :'i',
'j' :'j',
'k' :'k',
'l' :'l',
'm' :'m',
'n' :'n',
'o' :'o',
'p' :'p',
'q' :'q',
'r' :'r',
's' :'s',
't' :'t',
'u' :'u',
'v' :'v',
'w' :'w',
'x' :'x',
'y' :'y',
'z' :'z',
'{' :'{',
'|' :'|',
'}' :'}',
'~' :'~',
'。' :'。',
'「' :'「',
'」' :'」',
'、' :'、',
'・' :'・',
'ヲ' :'ヲ',
'ァ' :'ァ',
'ィ' :'ィ',
'ゥ' :'ゥ',
'ェ' :'ェ',
'ォ' :'ォ',
'ャ' :'ャ',
'ュ' :'ュ',
'ョ' :'ョ',
'ッ' :'ッ',
'ー' :'ー',
'ア' :'ア',
'イ' :'イ',
'ウ' :'ウ',
'エ' :'エ',
'オ' :'オ',
'カ' :'カ',
'カ' :'ヵ',
'キ' :'キ',
'ク' :'ク',
'ケ' :'ヶ',
'ケ' :'ケ',
'コ' :'コ',
'サ' :'サ',
'シ' :'シ',
'ス' :'ス',
'セ' :'セ',
'ソ' :'ソ',
'タ' :'タ',
'チ' :'チ',
'ツ' :'ツ',
'テ' :'テ',
'ト' :'ト',
'ナ' :'ナ',
'ニ' :'ニ',
'ヌ' :'ヌ',
'ネ' :'ネ',
'ノ' :'ノ',
'ハ' :'ハ',
'ヒ' :'ヒ',
'フ' :'フ',
'ヘ' :'ヘ',
'ホ' :'ホ',
'マ' :'マ',
'ミ' :'ミ',
'ム' :'ム',
'メ' :'メ',
'モ' :'モ',
'ヤ' :'ヤ',
'ユ' :'ユ',
'ヨ' :'ヨ',
'ラ' :'ラ',
'リ' :'リ',
'ル' :'ル',
'レ' :'レ',
'ロ' :'ロ',
'ワ' :'ヮ',
'ワ' :'ワ',
'ン' :'ン',
'゙' :'゛',
'゚' :'゜',
'' :''
};
$(function(){
window.resizeTo(800,640);
$('#han2zen').on('click',function(){
let str = $('#text1').val();
for (let key in henkan_table) {
let char = key;
if (-1 != $.inArray(key,['$','(',')','*','+','.','?','[',']','\\','^','|'])) {
char = '\\'+key;
}
str = str.replace(new RegExp(char,'g'),henkan_table[key]);
}
$('#text2').val(str);
return false;
});
$('#zen2han').on('click',function(){
let str = $('#text1').val();
for (let key in henkan_table) {
let char = key;
str = str.replace(new RegExp(henkan_table[key],'g'),char);
}
$('#text2').val(str);
return false;
});
});
</script>
</head>
<body>
<form class="ui form">
<div class="ui basic segment">
<div class="ui two column grid">
<div class="column">
<textarea id="text1" rows="30" class="textarea" placeholder="変換前"></textarea>
</div>
<div class="column">
<textarea id="text2" rows="30" class="textarea" placeholder="変換後"></textarea>
</div>
</div>
<div class="ui fluid buttons">
<button class="ui positive button" id="han2zen">半角→全角変換</button>
<div class="or"></div>
<button class="ui negative button" id="zen2han">全角→半角変換</button>
</div>
</div>
</form>
</body>
</html>