質問編集履歴

1

添削

2017/11/03 20:17

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -10,11 +10,19 @@
10
10
 
11
11
 
12
12
 
13
+ 与えられる文字列の条件としては
14
+
15
+ ・かならず 100時間 や 20分 のように数字+文字列の形となっています。
16
+
17
+ ・必ず数字、文字列の順番です
18
+
19
+
20
+
13
21
  #やったこと
14
22
 
15
23
  **unicode.IsDigit()**にruneを渡せば判断できるようなので、それを使って関数を書いてみましたが...
16
24
 
17
-
25
+ [https://play.golang.org/p/wrhXOE2aOD](https://play.golang.org/p/wrhXOE2aOD)
18
26
 
19
27
  ```go
20
28
 
@@ -22,7 +30,7 @@
22
30
 
23
31
  factor := "100時間"
24
32
 
25
- i := numCheck(a)
33
+ i := numCheck(factor)
26
34
 
27
35
  fmt.Println(i) //output: 64469
28
36
 
@@ -54,6 +62,46 @@
54
62
 
55
63
  これではint32の値しかわかりません。
56
64
 
65
+ このint32の値をintに変換するか、もしくはnumCheckの判別方法を根本的に変えないといけません。
57
66
 
58
67
 
68
+
59
- int32の値をintに変換するか、もしくはnumCheckの判別方法を根本的に変えいけせん
69
+ もちろん、文字列区切りを微調整しつつ**strconv.Atoi()**返りで判断するというようもでき
70
+
71
+ 以下例
72
+
73
+ [https://play.golang.org/p/jR2zEwqr3I](https://play.golang.org/p/jR2zEwqr3I)
74
+
75
+
76
+
77
+ ```go
78
+
79
+ func numCheck(factor string) int {
80
+
81
+ var i = 0
82
+
83
+ for {
84
+
85
+ res, _ := strconv.Atoi(factor)
86
+
87
+ if res != 0 {
88
+
89
+ return res
90
+
91
+ } else {
92
+
93
+ factor = factor[:len(factor) - i]
94
+
95
+ }
96
+
97
+ i ++
98
+
99
+ }
100
+
101
+ }
102
+
103
+
104
+
105
+ ```
106
+
107
+ 正直どちらもくどいので、何かスマートな方法を探しています。