【Golang】文字列から「,」カンマを削除する方法

Golang

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
}

このやり方であれば、文字列の中にカンマが含まれていてもエラーを出さずに処理を行うことができますね。

タイトルとURLをコピーしました