数値を漢字に変換(コンバーター)します。
非推奨 IEブラウザ
動作URL https://taoka-toshiaki.com/ketayomi/
github https://github.com/taoka-toshiaki/ketayomi
main.js
document.getElementById("number_text").addEventListener("input", function () {
let number_text = this.value.replace(/[^0-9]{0,}/g, "").split("").reverse();
let str = "";
const kanji = ["", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
if (parseInt(number_text[(number_text.length - 1)]) !== 0) {
for (const key in keta.keta) {
if (number_text[key] !== undefined) {
number_text[key] = parseInt(number_text[key]);
let keta_str = keta_fn(parseInt(keta.keta[key].zero));
let pattern = new RegExp(keta_str,"g");
if (number_text[key] == 0) {
//str = str;
} else if (number_text[key] == 1) {
if(!str.match(pattern)){
str = keta.keta[key].name.match(/[十|百|千]/) ? keta.keta[key].name + keta_str + str : kanji[number_text[key]] + keta.keta[key].name + keta_str +str;
}else{
str = keta.keta[key].name.match(/[十|百|千]/) ? keta.keta[key].name + str : kanji[number_text[key]] + keta.keta[key].name + str;
}
} else {
if(!str.match(pattern)){
str = kanji[number_text[key]] + keta.keta[key].name + keta_str + str;
}else{
str = kanji[number_text[key]] + keta.keta[key].name + str;
}
}
}
}
} else {
alert("先頭文字に0が付いています");
}
document.getElementById("view").innerHTML = str;
});
function keta_fn(key){
let str ="";
if(key>=4 && key%4>0){
str = keta.keta[(parseInt((key/4))*4)].name;
}
return str;
}
keta.js
const keta = {
"keta": [
{
"name": "",
"zero":0
},
{
"name": "十",
"zero": 1
},
{
"name": "百",
"zero": 2
},
{
"name": "千",
"zero": 3
},
{
"name": "万",
"zero": 4
},
{
"name": "十",
"zero": 5
},
{
"name": "百",
"zero": 6
},
{
"name": "千",
"zero": 7
},
{
"name": "億",
"zero": 8
},
{
"name": "十",
"zero": 9
},
{
"name": "百",
"zero": 10
},
{
"name": "千",
"zero": 11
},
{
"name": "兆",
"zero": 12
},
{
"name": "十",
"zero": 13
},
{
"name": "百",
"zero": 14
},
{
"name": "千",
"zero": 15
},
{
"name": "京",
"zero": 16
},
{
"name": "十",
"zero": 17
},
{
"name": "百",
"zero": 18
},
{
"name": "千",
"zero": 19
},
{
"name": "垓",
"zero": 20
},
{
"name": "十",
"zero": 21
},
{
"name": "百",
"zero": 22
},
{
"name": "千",
"zero": 23
},
{
"name": "抒",
"zero": 24
},
{
"name": "十",
"zero": 25
},
{
"name": "百",
"zero": 26
},
{
"name": "千",
"zero": 27
},
{
"name": "穣",
"zero": 28
},
{
"name": "十",
"zero": 29
},
{
"name": "百",
"zero": 30
},
{
"name": "千",
"zero": 31
},
{
"name": "溝",
"zero": 32
},
{
"name": "十",
"zero": 33
},
{
"name": "百",
"zero": 34
},
{
"name": "千",
"zero": 35
},
{
"name": "澗",
"zero": 36
},
{
"name": "十",
"zero": 37
},
{
"name": "百",
"zero": 38
},
{
"name": "千",
"zero": 39
},
{
"name": "正",
"zero": 40
},
{
"name": "十",
"zero": 41
},
{
"name": "百",
"zero": 42
},
{
"name": "千",
"zero": 43
},
{
"name": "載",
"zero": 44
},
{
"name": "十",
"zero": 45
},
{
"name": "百",
"zero": 46
},
{
"name": "千",
"zero": 47
},
{
"name": "極",
"zero": 48
},
{
"name": "十",
"zero": 49
},
{
"name": "百",
"zero": 50
},
{
"name": "千",
"zero": 51
},
{
"name": "恒河沙",
"zero": 52
},
{
"name": "十",
"zero": 53
},
{
"name": "百",
"zero": 54
},
{
"name": "千",
"zero": 55
},
{
"name": "阿僧祇",
"zero": 56
},
{
"name": "十",
"zero": 57
},
{
"name": "百",
"zero": 58
},
{
"name": "千",
"zero": 59
},
{
"name": "那由多",
"zero": 60
},
{
"name": "十",
"zero": 61
},
{
"name": "百",
"zero": 62
},
{
"name": "千",
"zero": 63
},
{
"name": "不可思議",
"zero": 64
},
{
"name": "十",
"zero": 65
},
{
"name": "百",
"zero": 66
},
{
"name": "千",
"zero": 67
},
{
"name": "無量大数",
"zero": 68
},
{
"name": "十",
"zero": 69
},
{
"name": "百",
"zero": 70
},
{
"name": "千",
"zero": 71
}
]
};
index.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="Description" content="Enter your description here"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css">
<link rel="stylesheet" href="assets/css/style.css">
<title>桁読みJS</title>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-48347814-1"></script>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
数値を入力ください。
<input class="form-control" type="text" name="text" id="number_text">
</div>
<div class="col-12">
<p id="view"></p>
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
<script src="./assets/js/keta.js?<?=time()?>"></script>
<script src="./assets/js/main.js?<?=time()?>"></script>
</body>
</html>