/* 漢数字辞書の生成 【使用法】 1. 本スクリプトを実行 2. 生成されたskkdict_number.txtを辞書フォルダへ L辞書では不十分な漢数字の読みを生成する。 最後の引数を真にすると数値変換も一緒に生成する。 */ F = new ActiveXObject("Scripting.FileSystemObject") /// 漢数字辞書の生成 function generate_number(outfile, extra) { var o = [], d = {}, i, j, n, m, c, z, N = "〇一二三四五六七八九".split(""), J = ",いち,に,さん,よん,ご,ろく,なな,はち,きゅう".split(","), X // 読み X = " ,じゅう 十,ひゃく 百 さんひ さんび ろくひ ろっぴ はちひ はっぴ,せん 千 さんせ さんぜ はち はっ".split(",") for (n in X) { z = X[n].split(" ") for (i = 1; i < 10; i++) { c = (m ? "" : J[i]) + z[0] for (j = 2; j < z.length; j += 2) c = c.replace(z[j], z[j + 1]) d[c] = (m ? "" : N[i]) + z[1] m = 0 } m = 1 } X = " ,まん 万,おく 億,ちょう 兆 ちち っち じゅう じゅっ".split(",") for (n in X) { z = X[n].split(" ") for (i in d) { c = i + z[0] for (j = 2; j < z.length; j += 2) c = c.replace(z[j], z[j + 1]) o.push(c + " /" + d[i] + z[1] + "/") } } X = ">まん 万,>おく 億,>ちょう 兆,>けい 京".split(",") for (n in X) { z = X[n].split(" ") o.push(z[0] + " /" + z[1] + "/") } // 数値 if (extra) for (i = 10; i < 10000; i++) { // 一桁目はL辞書で十分なので除外 c = i + " /" for (j = 0, n = 1000; j < 4; j++, n /= 10) { m = Math.floor(i / n) % 10 if (m) { if (m > 1 || j > 2) c += N[m] c += "千百十".charAt(j) } } /* c += "/" for (n = 1000; n >= 1; n /= 10) { // SKKFEPの漢数字入力機能で十分なので除外 if (i >= n) c += N[Math.floor(i / n) % 10] } */ o.push(c + "/") } // 出力 with (F.CreateTextFile(outfile, true)) { WriteLine(o.join("\r\n")) Close() } } generate_number("skk-number.txt", false)