回答編集履歴

3

追記2

2017/08/01 13:23

投稿

hatena19
hatena19

スコア33740

test CHANGED
@@ -43,3 +43,83 @@
43
43
  行き詰ったところ、想定通りにならないところをピンポイントで質問したほうが
44
44
 
45
45
  スキルアップにつながるでしょう。
46
+
47
+
48
+
49
+ 追記2
50
+
51
+ ---
52
+
53
+ 提示のコードはいいところまでいっています。
54
+
55
+ もっと効率的なコードもありますが、自分の学習のためということなので、提示のコードをなるべく活かしてアドバイスします。
56
+
57
+ まず、一気に一つの関数で無量大数までやろうとせずに、まずは4桁までの数値に千百十の桁を付加して変換する関数を作成するようにするといいでしょう。
58
+
59
+ 提示のコードの一部を変更しました。テキストボックスに4桁以下の数を入力して、希望の結果になるのを確認してください。
60
+
61
+ ```js
62
+
63
+ function toKanji4(n) {
64
+
65
+ var th = ["","千","二千","三千","四千","五千","六千","七千","八千","九千"];
66
+
67
+ var h = ["","百","二百","三百","四百","五百","六百","七百","八百","九百"];
68
+
69
+ var t = ["","十","二十","三十","四十","五十","六十","七十","八十","九十"];
70
+
71
+ var o = ["","一","二","三","四","五","六","七","八","九"];
72
+
73
+ var s = '';
74
+
75
+ var m = '';
76
+
77
+
78
+
79
+ if (n == 0) {
80
+
81
+ return '零';
82
+
83
+ } else if (n < 0 || isNaN(n)) {
84
+
85
+ return alert('漢数字に変換できません。');
86
+
87
+ } else {
88
+
89
+ s = n.substr(-4);
90
+
91
+ th = th [ Math.floor(s / 1000) ];
92
+
93
+ h = h [ Math.floor(s / 100) % 10 ];
94
+
95
+ t = t [ Math.floor(s / 10) % 10 ];
96
+
97
+ o = o [ s % 10 ];
98
+
99
+ m = th + h + t + o ;
100
+
101
+ return m;
102
+
103
+ }
104
+
105
+ }
106
+
107
+
108
+
109
+ function convert() {
110
+
111
+ var n = document.getElementById('num').value;
112
+
113
+ var result = document.getElementById('result');
114
+
115
+ result.innerHTML = toKanji4(n);
116
+
117
+ }
118
+
119
+ ```
120
+
121
+ ほとんど自分で書いたコードですのでやっていることの意味は理解できますよね。
122
+
123
+ うまく動作することが確認できたら、次は、
124
+
125
+ 末尾から4桁ずつ取り出して、上記の関数で変換させて、それに万、億、兆の桁を付加してつなげていく関数を作成すればいいことになります。トライしてみてください。

2

追記の修正

2017/08/01 13:23

投稿

hatena19
hatena19

スコア33740

test CHANGED
@@ -24,6 +24,22 @@
24
24
 
25
25
  ---
26
26
 
27
- 検索すれば、数十秒もあれば要望は解決するでしょう
27
+ ごめんなさい
28
28
 
29
+ > "正規表現を使わず"
30
+
31
+
32
+
33
+ という条件を見落としてました。
34
+
35
+ 上記のリンク先は正規表現を使ってますね。
36
+
37
+
38
+
39
+ この条件を付けたのは、自分の勉強のためにということでしょうか。
40
+
41
+ ならば、もう少し自分で考えてみて、コードを書いて、
42
+
29
- それではスキルアップらないので、自分でできるところ作成てみるといのもいいことです。その後、WEB上のコードと自分のコードを見比べることも、スキルアップにつなりますね。
43
+ 行き詰っところ想定通りにならないところをピンポイント質問たほうが
44
+
45
+ スキルアップにつながるでしょう。

1

追記

2017/08/01 04:46

投稿

hatena19
hatena19

スコア33740

test CHANGED
@@ -17,3 +17,13 @@
17
17
 
18
18
 
19
19
  だと無量大数まで対応してます。
20
+
21
+
22
+
23
+ 追記
24
+
25
+ ---
26
+
27
+ 検索すれば、数十秒もあれば要望は解決するでしょう。
28
+
29
+ ただ、それではスキルアップにつながらないので、自分でできるところまで作成してみるというのもいいことです。その後、WEB上のコードと自分のコードを見比べることも、スキルアップにつながりますね。