見出し画像

Re:SALOON & VBA

HTA版 住所分解コード化ツール CSV入力EXCEL出力版

前回の記事は、HTA版 住所分解コード化ツールCSV入力版で、
残課題としたもののひとつEXCELへの出力を機能追加しました。

いろいろ改良して、処理速度は結構改善したつもりです。
マシン性能によりますが、僕のPCでは2,000件で約15秒ぐらいの処理時間です。
(EXCEL出力時は8倍程遅いです、同じロジックでその後ACCESS版を作りましたが、そっちは1/2で速いです)

途中経過が表示できないので(処理中はダンマリになる)のが辛いところで
処理件数とか経過時計を表示(ガイド)するようにしたり、
経過音を出すようにしたりしてます。

「市」「町」「村」を区切り判定に使う以上避けられない例外地名への
対応は、そこそこ入れてみました。(勿論不完全です)
堺市の「丁」とか北海道の「条」とか「丁目北」のような「丁目」の例外や
異体字の対応も全然入れてません。出現したら個別対応でしょう。

人間が目で判断するのが速い?とは思うものの
それでも、こうやれば
キレイで簡単なロジックが組めるよというのがありましたら、教えて下さい。

↓以下、ソースはツギハギで作成しているので実にキタナイ。
無職浪人の暇つぶしであります。
どうか、ご容赦を!

**(ADRS_BUNKAI_CSV.hta)*********************************************************
<html>
<head>
<meta http-equiv="Content-Type"    content="text/html; charset=Shift_JIS" />
<meta http-equiv="Content-Language"  content="ja" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<hta:application applicationName="ADRS BUNKAI CSV"
         navigable="Yes"
         contextmenu="Yes"
         scroll="Yes">
</hta:application>
<script src="ADRS_BUNKAI_CSV.js" type="text/javascript"></script>
<link href="ADRS_BUNKAI_CSV.ccs" type="text/css" rel="stylesheet">
<title>ADRS BUNKAI CSV</title>
</head>
<body>
<script type="text/javascript"><!--
 window.resizeTo(790, 200);
// --></script>
<form name="adrsform">
 <table>
  <td width="140">住所分解TOOL</td>
  <td width="430">▼分解する住所ファイル(CSV)を選択して下さい</td>
  <td width="60"><input id="Web" name="OutMedia" type="radio" checked />WEB</td>
  <td width="60"><input id="Xls" name="OutMedia" type="radio" />XLS</td>
  <td width="60" align="right"><input id="goAnalize" type="button" value="分解" onClick="func_bunkai()"></td>
  </tr>
 </table>
 <table border="1">
  <tr>
  <td bgcolor="#000000" width="140">住所FILE(CSV)</td>
  <td bgcolor="#ffffff"><input type="file" id="inFile" accept=".csv"></td>
  </tr>
 </table>
  <tr><td><label id="labelMsg"></label></td></tr>
 </table>
</form>
<bgsound src="C:\Windows\Media\Windows Logon Sound.wav" id=music loop=1 autostart="false">
<script type="text/javascript"><!--
 window.resizeTo(790, 200);
// --></script>
</body>
</html>

**(ADRS_BUNKAI_CSV.ccs)*********************************************************
body {
 background-color: #3CB371;
 color: #ffffff;
 filter: progid:DXImageTransform.Microsoft.Gradient
 (GradientType="0", StartColorStr="#3CB371", EndColorStr="#C0C0C0");
 font-family: "メイリオ";
}
input#inFile {
 width:38em;
 border:none;
 font-family: "メイリオ";
 font-size:16px;
 ime-mode: active;
}
input#goAnalize {
 width:50px;
 height:30px;
 font-size:14px;
 text-decoration:none;
 display:block;
 text-align:center;
 color:#ffffff;
 background-color: #000000;
 border-radius:5px;
 box-shadow:2px 2px #ff0000;
}

**(ADRS_BUNKAI_CSV.js)**********************************************************
// グローバル変数
 var kenMei,sikuMei,oazaMei,koazaMei,bantiMei,kataMei,postNo,kenCd,sikuCd,oazaCd,koazaCd,line;
 var cn = null;
// 分解メイン ==================================================================
function func_bunkai() {
// 入力ファイル読み込み(初期)******************
 var inFile = document.getElementById("inFile").value;
 if (inFile=="") {
  alert("ファイルを選択して下さい");
  document.getElementById("labelMsg").innerText = "ファイルを選択して下さい";
  return;
 }
 var fso  = new ActiveXObject("Scripting.FileSystemObject");
 var file = fso.OpenTextFile(inFile, 1, false);  // 読み取り専用
 var csv  = file.ReadAll().split(/\r\n|[\r\n]/); // 行数取得
 var swXls = document.adrsform.OutMedia[1].checked;
 if (csv.length > 99) {
  file.Close();
  var myTime = Math.ceil(csv.length * 0.006) + 1;
  if (swXls) { myTime = myTime * 8; }       // EXCEL出力時は、8倍する
  if (confirm(csv.length + "行あります。よろしいですか?\n処理に凡そ " + myTime + " 秒程かかります")) {
  } else { return; }
 }

// 開始処理・変数初期化 *************************
 document.getElementById("labelMsg").innerText = "処理実行中です";
 var startTime = new Date();
 var file = fso.OpenTextFile(inFile, 1, false);  // 再読み込み
 var fr   = ""; // 入力レコード
 var tmp   = []; // 分割レコード
 var i    = 0; // 行
 var j    = 0; // 列
 var inAdrs = ""; // 変換元住所
 var stAdrs = ""; // 住所ワーク

// ORACLEの接続 *********************************
 window.onerror = function () { return true; }
 cn = new ActiveXObject("ADODB.Connection");
 try {
  cn.Open("Driver={Microsoft ODBC for Oracle};CONNECTSTRING=ORCL;UID=TESTUSER;PWD=TESTPWD;");
 } catch (e) {
  document.getElementById("labelMsg").innerText = "ORACLE との接続に失敗しました";
  alert("ORACLE との接続に失敗しました");
  return false;
 }
 window.onerror = function () { return false; }

// 開始処理・出力準備 ***************************
 if ( swXls ) {
  var excel  = new ActiveXObject("Excel.Application");
  var book  = excel.Workbooks.Add(); // 新規ワークブックを作成
  var sheet  = book.WorkSheets(1);  // シートを取得
 } else {
  var result = '<body style="filter:progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorstr=#4169E1,endColorstr=#C0C0C0)";>';
    result += '<table border=1 bgcolor=#ffffff>';
 }

// 繰り返し処理 *********************************
 while (!file.AtEndOfStream) {
 // 明細ワーク初期化
  func_initWork();
  i  = i + 1;
  fr = file.ReadLine();
  tmp = fr.split(",");

 // 先頭行処理 
  if ( i == 1 ) {
   var k = -1;
   for(j = 0; j < tmp.length; j++){
    if(tmp[j].indexOf("住所") >= 0){ k = j; break; }
   }
   if ( k== -1 ) {
    alert("住所列が判定できません");
    file.Close();
    return;
   }
   if ( swXls==false ) {
    result += '<tr bgcolor=#FF7F50><td>住所</td><td width=75>POST</td><td>県CD</td><td>市町村CD</td><td>大字CD</td><td>小字</td>';
    result += '<td>府県名</td><td>市町村名</td><td>大字名</td><td>小字名</td><td>番地</td><td>方書</td></tr>';
   }
 // 明細行処理  
  } else {
  // 住所分解
   inAdrs = tmp[k];
   inAdrs = inAdrs.replace(/^ /, "");
   inAdrs = inAdrs.replace(/\s+/g, "");
   inAdrs = inAdrs.replace("-", "-");
   inAdrs = inAdrs.replace(/[A-Za-z0-9]/g, function(s) {
        return String.fromCharCode(s.charCodeAt(0) + 0xFEE0);
        });
   stAdrs = func_kenMei (inAdrs);
   stAdrs = func_sikuMei(stAdrs);
   stAdrs = func_azaMei (stAdrs);
   stAdrs = func_bankata(stAdrs);
  // 結果の書出し
   if ( swXls ) {
    sheet.Cells(i,1).value = inAdrs;
    func_cellsSet(sheet,i);
    if (i== Math.floor(i/50) * 50) { document.all.music.src="C:/Windows/Media/Windows Battery Critical.wav"; }
   } else {
    line = "<tr><td bgcolor=#F0E68C>" + inAdrs + "</td>";
    result += func_webPage();
    if (i== Math.floor(i/200) * 200) { document.all.music.src="C:/Windows/Media/Windows Battery Critical.wav"; }
   }
  }
 }

// 終了処理 *************************************
 file.Close();
 cn.Close();
 cn = null;
 document.getElementById("labelMsg").innerText = "住所分解処理終了!";

 // EXCEL 出力処理
 if (swXls) {
  sheet.Cells(1,1).value = "住所";
  sheet.Cells(1,2).value = "POST";
  sheet.Cells(1,3).value = "県CD";
  sheet.Cells(1,4).value = "市町CD";
  sheet.Cells(1,5).value = "大字CD";
  sheet.Cells(1,6).value = "小字CD";
  sheet.Cells(1,7).value = "都道府県";
  sheet.Cells(1,8).value = "市区町村";
  sheet.Cells(1,9).value = "大字";
  sheet.Cells(1,10).value = "小字";
  sheet.Cells(1,11).value = "番地";
  sheet.Cells(1,12).value = "方書";
  var range = sheet.Range(sheet.Cells(1,1),sheet.Cells(1,12));
  range.Font.Bold      = true;
  range.Font.ColorIndex   = 2; // 白
  range.Interior.ColorIndex = 32; // 青
  range = sheet.Range(sheet.Cells(1,1),sheet.Cells(i,12));
  range.Borders.Weight   = 2; // 罫線(細線)
  range.Borders.LineStyle  = 1; // 罫線(実線)
  sheet.Columns.AutoFit();
  excel.Visible    = true;
  excel.DisplayAlerts = false;  // 既存ファイルがあっても上書き
  var myD = new Date();
  inFile = inFile.replace("CSV","csv");
  var xlsFile = inFile.replace(".csv","_") + myD.getFullYear() + "-"
        + ( "0" + (myD.getMonth()+1)).slice( -2 ) + "-"
        + ( "0" + myD.getDate()).slice( -2) + ".xlsx";
  book.SaveAs(xlsFile);
  excel.DisplayAlerts = true;
  var endTime = new Date();
  alert("Excelファイル\n" + xlsFile + "\nを出力しました\n処理経過時間:" + (endTime - startTime) + "ms");
  document.getElementById("labelMsg").innerText = xlsFile + "\nを出力しました";
  excel.Quit();
  excel = null;
  document.all.music.src="C:/Windows/Media/Windows Logoff Sound.wav";
// WEBサブページ出力処理
 } else {
  result += '</table></body>';
  window.resizeTo(1200,1000);
  document.write('<table><tr><td align="center"><b><font size="4" color="#00ffff">住所分解結果 ' + inFile + ' </font></b></td>');
  document.write('<td align="right" width=200><a href="ADRS_BUNKAI_CSV.hta"><font size="3" color="#ffff00">戻る</font></a></td></tr></table>');
// document.write('<td align="right" width=200><a href="#" onclick="window.close(); return false;"><font size="3" color="#ffff00">閉じる</font></a></td></tr></table>');
  document.write(result);
  var endTime = new Date();
  document.write("処理経過時間:" + (endTime - startTime) + "ms");
  document.write('<bgsound src="C:/Windows/Media/Windows Logoff Sound.wav" id=music loop=1 autostart="false">');
 }
}
// Work初期化 ==================================================================
function func_initWork() {
 kenMei =sikuMei =oazaMei =koazaMei =bantiMei =kataMei =postNo =kenCd =sikuCd =oazaCd = koazaCd = "";
}
// Excel明細処理 ===============================================================
function func_cellsSet(sheet,i) {
 sheet.Cells(i,2).value = postNo;
 sheet.Cells(i,3).value = kenCd;
 sheet.Cells(i,4).value = sikuCd;
 sheet.Cells(i,5).value = oazaCd;
 sheet.Cells(i,6).value = koazaCd;
 sheet.Cells(i,7).value = kenMei;
 sheet.Cells(i,8).value = sikuMei;
 sheet.Cells(i,9).value = oazaMei;
 sheet.Cells(i,10).value = koazaMei;
 sheet.Cells(i,11).value = "'" + bantiMei;
 sheet.Cells(i,12).value = kataMei;
}
// Web明細処理 =================================================================
function func_webPage(inAdrs) {
 line += "<td>" + postNo + "</td><td>" + kenCd + "</td><td>" + sikuCd + "</td><td>" + oazaCd;
 line += "</td><td>" + koazaCd + "</td><td>" + kenMei  + "</td><td>" + sikuMei + "</td><td>" + oazaMei;
 line += "</td><td>" + koazaMei + "</td><td>" + bantiMei + "</td><td>" + kataMei + "</td></tr>";
 return line;
}
// 都道府県名分解 ==============================================================
function func_kenMei(inAdrs) {
 var tmp = [];
 if (inAdrs.slice(2,3)=="県" || inAdrs.slice(2,3)=="府" ||
   inAdrs.slice(0,3)=="北海道" || inAdrs.slice(0,3)=="東京都" ) {
  kenMei = inAdrs.slice(0,3);
 } else if (inAdrs.slice(3,4)=="県") {
  kenMei = inAdrs.slice(0,4);
 } else {
  return inAdrs;
 }
 var mySql = "SELECT NEWKENCD FROM MST_ADRS1 WHERE KENMEI = '" + kenMei + "'";
 tmp    = func_selSql(mySql);
 if (tmp[0] != "NOT FOUND") {
  kenCd  = tmp[0];
  return inAdrs.slice(kenMei.length);
 } else {
  return inAdrs;
 }
}
// 市区町村名分解 ==============================================================
function func_sikuMei(inAdrs) {
// 郡仁木町西町一丁目
 var r = 0;
 var tmp = [];
 if (inAdrs==null) { return inAdrs; }

 r = 99;
 if (inAdrs.indexOf("市") > -1) {
  if (inAdrs.indexOf("区") > 0) {
   switch (inAdrs.slice(0, 3)) { // 区のある政令指定都市でない市
    case "伊達市":
    case "石狩市":
    case "八戸市":
    case "盛岡市":
    case "奥州市":
    case "上越市":
    case "宇陀市":
    case "姫路市": sikuMei = inAdrs.slice(0, 3); break;
    default:
     if (inAdrs.slice(0, 4) == "南相馬市") {
      sikuMei = "南相馬市";
     } else {
      sikuMei = inAdrs.slice(0,inAdrs.indexOf("区")+1);
     }
   }
  } else {
   switch (inAdrs.slice(0, 3)) { // 市で始まる市
    case "市原市":
    case "市川市": sikuMei = inAdrs.slice(0, 3); break;
    default:    sikuMei = inAdrs.slice(0,inAdrs.indexOf("市")+1);
   }
  }
  r = sikuMei.length;
 }
 if (inAdrs.indexOf("区") > 0 && inAdrs.indexOf("区") < r ) { // 東京都
  sikuMei = inAdrs.slice(0,inAdrs.indexOf("区")+1);
  r = sikuMei.length;
 }
 if (inAdrs.indexOf("町") > 0 && inAdrs.indexOf("町") < r ) {
  sikuMei = inAdrs.slice(0,inAdrs.indexOf("町")+1);
  r = sikuMei.length;
  sikuMei = sikuMei.slice(inAdrs.indexOf("郡")+1);
 }
 if (inAdrs.indexOf("村") > 0 && inAdrs.indexOf("村") < r ) {
  sikuMei = inAdrs.slice(0,inAdrs.indexOf("村")+1);
  r = sikuMei.length;
  sikuMei = sikuMei.slice(inAdrs.indexOf("郡")+1);
 }
 if ( r == 99 ) { return inAdrs; }
 if (kenCd != "") {
  var mySql = "SELECT NEWSIKUCD FROM MST_ADRS2 WHERE NEWKENCD = " + kenCd + " AND SIKUMEI = '" + sikuMei + "'";
 } else {
  var mySql = "SELECT NEWSIKUCD FROM MST_ADRS2 WHERE SIKUMEI = '" + sikuMei + "'";
 }
 tmp  = func_selSql(mySql);
 if (tmp[0] != "NOT FOUND") {
  sikuCd = tmp[0];
 } else {
  r = func_sikuElse(inAdrs);
 }
 if (kenCd == "") {
  mySql = "SELECT NEWKENCD FROM MST_ADRS2 WHERE SIKUMEI = '" + sikuMei + "'";
  tmp  = func_selSql(mySql);
  if (tmp[0] != "NOT FOUND") {
   kenCd = tmp[0];
  }
 }
 if (sikuMei.length < r) { // 郡部町村名を戻す
  sikuMei = inAdrs.slice(0,r);
 }
 return inAdrs.slice(r);
}
// 例外地名 ====================================================================
function func_sikuElse(inAdrs) {
 // 例外市区町村名
 var tmp = [];
 var r  = 3;
 switch (inAdrs.slice(0,3)) {
  case "羽村市":
  case "村山市":
  case "村上市":
  case "大村市":
  case "大町市":
  case "町田市":
  case "田村市":
  case "都城市": sikuMei = inAdrs.slice(0,3); break;
  case "水沢市":
  case "江刺市": sikuMei = "奥州市"; break;
  default : r = 4; break;
 }
 if ( r==4 ) {
  switch (inAdrs.slice(0,4)) {
   case "四日市市":
   case "十日町市":
   case "廿日市市":
   case "南相馬市":
   case "東村山市":;
   case "野々市市": sikuMei = inAdrs.slice(0,4); break;
   case "鳩ヶ谷市": sikuMei = "川口市"; break;
   default : r = 5; break;
  }
 }
 if ( r==5 ) {
  switch (inAdrs.slice(0,5)) {
   case "武蔵村山市": sikuMei = "武蔵村山市"; break;
   default : r = 6; break;
  }
 }
 if ( r==6 ) {
  switch (inAdrs.slice(0,6)) {
   case "吉野郡下市町":
   case "杵島郡大町町":
   case "高市郡高取町":
   case "佐波郡玉村町":
   case "柴田郡村田町":
   case "神崎郡市川町":
   case "田村郡三春町":
   case "田村郡小野町":
   case "芳賀郡市貝町":
   case "余市郡仁木町":
   case "余市郡余市町":
   case "宗谷郡猿払村":
   case "三宅島三宅村": sikuMei = inAdrs.slice(3,6); break;
   case "幡豆郡一色町":
   case "幡豆郡吉良町":
   case "幡豆郡幡豆町": sikuMei = "西尾市"; break;
   case "岩手郡滝沢村": sikuMei = "滝沢市"; break;
   case "簸川郡斐川町": sikuMei = "出雲市"; break;
   default : r = 7; break;
  }
 }
 if ( r==7 ) {
  switch (inAdrs.slice(0,7)) {
   case "西村山郡河北町":
   case "西村山郡西川町":
   case "西村山郡大江町":
   case "西村山郡朝日町":
   case "中新川郡上市町":
   case "東村山郡山辺町":
   case "東村山郡中山町": sikuMei = inAdrs.slice(4,7); break;
   case "高市郡明日香村":
   case "胆沢郡金ケ崎町":
   case "余市郡赤井川村": sikuMei = inAdrs.slice(3,7); break;
   case "南埼玉郡白岡町": sikuMei = "白岡市"; break;
   case "八束郡東出雲町": sikuMei = "松江市"; break;
   case "東磐井郡藤沢町": sikuMei = "一関市"; break;
   case "下都賀郡岩舟町":
   case "上都賀郡西方町": sikuMei = "栃木市"; break;
   case "愛知郡長久手町": sikuMei = "長久手市"; break;
   case "石川郡野々市町": sikuMei = "野々市市"; break;
   case "刈田郡七ケ宿町": sikuMei = "七ヶ宿町"; break;
   case "名古屋市中村区": sikuMei = "名古屋市中村区"; break;
   default : r = 8; break;
  }
 }
 if ( r==8 ) {
  switch (inAdrs.slice(0,8)) {
   case "北村山郡大石田町": sikuMei = "大石田町"; break;
   case "山武郡大網白里町": sikuMei = "大網白里市"; break;
   default : r = 9; break;
  }
 }
 if ( r==9 ) {
  if (inAdrs.slice(0,9) == "西八代郡市川三郷町") {
   sikuMei = "市川三郷町";
  } else {
   return 0;
  }
 }
 // 他に、市・区・町・村の出現順・位置により誤分解あれば考慮・追加要

 var mySql = "SELECT NEWSIKUCD FROM MST_ADRS2 WHERE SIKUMEI = '" + sikuMei + "'";
 tmp    = func_selSql(mySql);
 if (tmp[0] != "NOT FOUND") {
  sikuCd  = tmp[0];
 } else {
  sikuCd  = "";
  r = 0;
 }
 return r;
}
// 町字分解 ====================================================================
function func_azaMei(inAdrs) {
 var azaMei = "";
 var stAdrs = "";
 var tmp  = [];
 var r = inAdrs.search("丁目");
 if (r > 0) {
  azaMei = inAdrs.slice(0,r+2);
  azaMei = func_kanSuji(azaMei);
  stAdrs = inAdrs.slice(r+2);
 } else {
  r = inAdrs.search(/[0-9]/);
  if (r > 0) {
   azaMei = inAdrs.slice(0,r);
   stAdrs = inAdrs.slice(r);
  }
 }
 if ( azaMei=="" ) { return inAdrs; }
 if ( kenCd=="" || sikuCd=="" ) {
  oazaMei = azaMei;
  return stAdrs;
 }
 var azaMei2 = azaMei.replace("大字","");
   azaMei2 = azaMei2.replace("小字","");
 var mySql = "SELECT OAZAMEI,DECODE(KOAZAMEI,NULL,' ',KOAZAMEI),NEWOAZACD,NEWKOAZACD,YUBIN" +
        " FROM MST_ADRS3 WHERE NEWKENCD = " + kenCd + " AND NEWSIKUCD = " + sikuCd
               + " AND OAZAMEI || KOAZAMEI LIKE '%" + azaMei2 + "'";
 tmp = func_selSql(mySql);
 if (tmp[0] != "NOT FOUND") {
  oazaMei = tmp[0];
 } else {
  r = inAdrs.search("-");
  if (r > 0) {
   var azaMei2 = inAdrs.slice(0,r) + "丁目";
     azaMei2 = func_kanSuji(azaMei2);
   var stAdrs2 = inAdrs.slice(r+1);
   var mySql = "SELECT OAZAMEI,DECODE(KOAZAMEI,NULL,' ',KOAZAMEI),NEWOAZACD,NEWKOAZACD,YUBIN" +
         " FROM MST_ADRS3 WHERE NEWKENCD = " + kenCd + " AND NEWSIKUCD = " + sikuCd
                 + " AND OAZAMEI || KOAZAMEI = '" + azaMei2 + "'";
   tmp = func_selSql(mySql);
   if (tmp[0] != "NOT FOUND") {
    oazaMei = tmp[0];
    stAdrs = stAdrs2;
   }
  }
 }
 if (tmp[0] == "NOT FOUND") {
  oazaMei = azaMei;
  koazaMei = "";
  oazaCd  = "";
  koazaCd = "";
  postNo  = "";
 } else {
  koazaMei = tmp[1];
  oazaCd  = tmp[2];
  koazaCd = tmp[3];
  postNo  = tmp[4];
 }
 return stAdrs;
}
// 番地・方書分割 ==============================================================
function func_bankata(inAdrs) {
 var r = inAdrs.search(" ");
 if (r > 0) {
  bantiMei  = inAdrs.slice(0,r);
  var stAdrs = inAdrs.slice(r+1);
  kataMei  = stAdrs;
 } else {
  bantiMei  = inAdrs;
  kataMei  = "";
 }
}
// マスタ検索 ==================================================================
function func_selSql(mySql) {
 var arr = [];
 try {
  var rs = cn.Execute(mySql);
 } catch (e) {
  document.write("SQLの実行が失敗しました" + "<br>" + mySql + "<br>");
  alert("SQLの実行が失敗しました" + "\n" + mySql);
  cn.Close
  return false;
 }
 if (!rs.EOF){
  for ( var i = 0; i < rs.Fields.Count ; i++ ) {
   if (rs(i).value == null) {
    arr[i] = ""
   } else {
    arr[i] = rs(i).value
   }
  }
 } else {
  arr[0] = "NOT FOUND"
 }
 rs.Close();
 rs = null;
 return arr;
}
// 丁目数字変換(アラビア数字⇒漢数字)=========================================
function func_kanSuji(azaMei) {
 var r = azaMei.search(/[0-9]/);
 if ( r < 0 ) { return azaMei; }
 var a = '1,2,3,4,5,6,7,8,9,一0,一1,一二,一三,一四,二0,二一,二2,二三,二四'.split(',');
 var k = '一,二,三,四,五,六,七,八,九,十,十一,十二,十三,十四,二十,二十一,二十二,二十三,二十四'.split(',');
 for ( var i = 0; i < 19 ; i++ ) {
  azaMei = azaMei.replace(a[i],k[i]);
 }
 return azaMei;
}
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

※ブログ作成者から承認されるまでコメントは反映されません。

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「HTA」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事