大字への變換の Sample Code を書いてみた。
例.
- "0" → ""
- "12,345" → "壹萬貳阡參佰肆拾伍"
- "987,654,321" → "玖億捌阡柒佰陸拾伍萬肆阡參佰廿壹"
- "122,090,654,002,030" → "壹佰廿貳兆玖佰陸億伍阡肆佰萬貳阡卅"
- "34,500,000,000,128,034" → "參京肆阡伍佰兆壹拾貳萬捌阡卅肆"
- "10,000,000,000,000,000,000" → "壹阡京"
// Source Code by C#
static string 大字への變換(string 亞剌比亞數字)
{
亞剌比亞數字 = 亞剌比亞數字.Replace(",", "");
ulong 數;
if (!ulong.TryParse(亞剌比亞數字, out 數))
throw new ArgumentException();
var 數表現 = new[] { "", "壹", "貳", "參", "肆", "伍", "陸", "柒", "捌", "玖" };
var 小位表現 = new[] { "", "拾", "佰", "阡" };
var 大位表現 = new[] { "", "萬", "億", "兆", "京" };
var 大位表現使用濟み = new[] { false, false, false, false, false };
var 大字 = string.Empty;
for (var 位 = 0; 數 != 0ul; 數 /= 10ul, 位++) {
var 或る位の數 = (int)(數 % 10ul);
if (或る位の數 != 0) {
var 大位 = 位 / 4;
if (大位 >= 大位表現.Length)
throw new OverflowException();
if (!大位表現使用濟み[大位]) {
大字 = 大位表現[大位] + 大字;
大位表現使用濟み[大位] = true;
}
大字 = 數表現[或る位の數] + 小位表現[位 % 4] + 大字;
}
}
return 大字.Replace("貳拾", "廿").Replace("參拾", "卅");
}