AIで外変を作ってみました。興味のある方はお試し下さい。
AIのおかげで、外変を気軽に作って活用できるのもJw_cadの強みですね。
選択した数字(カンマ付き・文字混じり可)を、
万・億・兆・京…… といった和単位に自動変換します。
例:
1500000000000 → 1兆5000億
1,500,000,000,000円 → 1兆5000億円
億兆変換.bat
@REM 数字を億・兆・万の単位に変換
@echo off
REM #jww
REM #cd
REM #h1
REM #hc 文字または寸法値を範囲選択またはクリック(寸法図形対象外)
REM #g1
REM #zc 文字基点
REM #hr
REM #e
copy jwc_temp.txt temp.txt > nul
ruby -Ks "億兆変換.rb" temp.txt > jwc_temp.txt
------------------------------------------------------------------
億兆変換.rb
print "hd\n"
# --- 究極の漢数字変換メソッド(無量大数まで・文字化け対策版) ---
def to_jp(n)
return "0" if n == 0
s = ""
# 単位の定義(大きい順)
# [指数, 単位名]
units = [
[68, "無量大数"],
[64, "不可思議"],
[60, "那由他"],
[56, "阿僧祇"],
[52, "恒河沙"],
[48, "極"],
[44, "載"],
[40, "正"],
[36, "澗"],
[32, "溝"],
[28, "穣"],
[24, "ジョ"], # ←ここを漢字からカタカナに変更して文字化け回避
[20, "垓"],
[16, "京"],
[12, "兆"],
[8, "億"],
[4, "万"]
]
units.each do |exponent, unit_name|
divisor = 10 ** exponent
if n >= divisor
d = n / divisor
n = n % divisor
s += "#{d}#{unit_name}"
end
end
# 端数
s += "#{n}" if n > 0
return s
end
# ------------------------
while ARGF.gets
if $_ =~ /^hq/
# hqは無視
elsif $_ =~ /^c[hs]/
# 成功した構造(split方式)
data = $_.split
data.collect!{ |item| item.to_s }
no = $_.index(/"/)
moji = $_[no+1..-1].strip
# 数字(とカンマ)を探して漢数字にする
moji = moji.gsub(/[0-9,]+/) do |match|
val = match.delete(",").to_i
if val == 0
match
else
to_jp(val)
end
end
moji2 = "\"" + moji + "\n"
out_moji = ([data[0],data[1],data[2],data[3],data[4],moji2]).join(" ")
print out_moji
else
print $_
end
end