質問編集履歴
1
添削
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
|
-
|
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
|
+
正直どちらもくどいので、何かスマートな方法を探しています。
|