#やりたいこと
例えば
"100時間"
という文字列があったとします。
この中から100という数字を探して、int型として抜き出したいです。
与えられる文字列の条件としては
・かならず 100時間 や 20分 のように数字+文字列の形となっています。
・必ず数字、文字列の順番です
#やったこと
**unicode.IsDigit()**にruneを渡せば判断できるようなので、それを使って関数を書いてみましたが...
https://play.golang.org/p/wrhXOE2aOD
go
1func main() { 2 factor := "100時間" 3 i := numCheck(factor) 4 fmt.Println(i) //output: 64469 5} 6 7func numCheck(factor string) int32 { 8 var num int32 9 for _, f := range factor { 10 if !unicode.IsDigit(f) { 11 num += f 12 } 13 } 14 return num 15}
これではint32の値しかわかりません。
このint32の値をintに変換するか、もしくはnumCheckの判別方法を根本的に変えないといけません。
もちろん、文字列の区切りを微調整しつつ**strconv.Atoi()**の返り値で判断するというようなこともできます。
以下例
https://play.golang.org/p/jR2zEwqr3I
go
1func numCheck(factor string) int { 2 var i = 0 3 for { 4 res, _ := strconv.Atoi(factor) 5 if res != 0 { 6 return res 7 } else { 8 factor = factor[:len(factor) - i] 9 } 10 i ++ 11 } 12} 13
正直どちらもくどいので、何かスマートな方法を探しています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/04 05:04 編集
2017/11/04 05:03
退会済みユーザー
2017/11/04 05:10
2017/11/04 05:22
退会済みユーザー
2017/11/04 05:30
2017/11/04 05:32 編集