strconvで数値型に変換する時にカンマがあるとエラーが発生
Golangでは、strconvパッケージを使って、文字列の数字を数値型に変換することってありますよね?
こんな感じで。
strconv.Atoi("1000")
この時、もしも文字列の数字にカンマが含まれていた場合、strconv.Atoiの処理はエラーを発生させてしまいます。
package main
import (
"fmt"
"strconv"
)
func main() {
numberString := "1,000"
result, err := strconv.Atoi(numberString)
fmt.Println(err) // strconv.Atoi: parsing "1,000": invalid syntax
fmt.Println(result) // 0
}
上記のようなことを防ぐためには、あらかじめ文字列からカンマを削除しておく必要があります。
以下でその方法を解説しますね。
Golangで文字列からカンマを削除する方法
ずばり結論から申し上げると、GolangのstringsパッケージにあるReplace関数を使用することで、文字列中のカンマを取り除くことができます。
基本的な構文は次のようになります。
新しい文字列 := strings.Replace(対象の文字列, 削除したい文字列, 置き換える文字列, -1)
例えば、”1,000,000″という文字列からカンマを削除する場合、
strings.Replace("1,000,000", ",", "", -1) // 1000000
となります。
“1,000,000”という文字列の中に含まれている全ての「”,”(カンマ)」を「””(空文字)」に置き換えるという意味です。
全体的な処理が分かるコード例は以下の通りです。
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
numberString := "1,000,000"
numberWithoutComma := strings.Replace(numberString, ",", "", -1)
result, err := strconv.Atoi(numberWithoutComma)
fmt.Println(err) // nil
fmt.Println(result) // 1000000
}
このやり方であれば、文字列の中にカンマが含まれていてもエラーを出さずに処理を行うことができますね。