Go 言語で文字列から数値を抽出する方法
Go 言語では、文字列から数値部分を抽出する必要があることがよくあります。たとえば、電話番号を含む文字列の数値部分を抽出したり、価格情報を含む文字列から価格番号を抽出したりする必要がある場合があります。この記事では、この目標を達成するための一般的な方法をいくつか紹介します。
方法 1: 正規表現を使用する
Go 言語には、文字列の数値部分を抽出するために使用できる組み込みの正規表現ライブラリregexp
が用意されています。以下はサンプル コードです:
package main import ( "fmt" "regexp" ) func main() { str := "ABC1234DEF5678GHI" re := regexp.MustCompile("[0-9]+") nums := re.FindAllString(str, -1) fmt.Println(nums) }
上記のコードを実行すると、出力結果は次のようになります:[1234 5678]
。
上記のコードでは、正規表現[0-9]
を使用して文字列の数値部分と一致します。関数FindAllString
一致するすべての文字列を返します。 2 番目のパラメータ-1
は、最初の一致だけではなく、すべての一致を返すことを意味します。最後に、抽出した数値部分を出力します。
方法 2:strconv
パッケージを使用する
Go 言語のstrconv
パッケージには、文字列およびさまざまな数値型を変換するための一連の関数が用意されています。関数。これらの関数を使用して、文字列から数値を抽出できます。
以下はサンプル コードです:
package main import ( "fmt" "strconv" ) func main() { str := "ABC1234DEF5678GHI" nums := make([]int, 0) num := "" for _, char := range str { if char >= '0' && char <= '9' { num += string(char) } else if num != "" { n, _ := strconv.Atoi(num) nums = append(nums, n) num = "" } } fmt.Println(nums) }
上記のコードを実行すると、出力結果は次のようになります:[1234 5678]
。
上記のコードでは、文字列内の各文字を反復処理し、抽出された数値文字列をAtoi
関数を使用して整数に変換します。最後に、抽出した数値部分を出力します。
方法 3: 文字列を手動で解析する
文字列の数値部分に特定のルールがある場合は、文字列を手動で解析して数値を抽出することもできます。以下はサンプル コードです:
package main import "fmt" func main() { str := "ABC1234DEF5678GHI" nums := make([]int, 0) num := 0 for _, char := range str { if char >= '0' && char <= '9' { num = num*10 + int(char-'0') } else if num != 0 { nums = append(nums, num) num = 0 } } fmt.Println(nums) }
上記のコードを実行すると、出力結果は次のようになります:[1234 5678]
。
上記のコードでは、文字列内の各文字を反復処理し、現在の文字の ASCII コードから文字'0'
の ASCII コードを引いたものを使用して、対応する数値を取得します。現在の数値に常に 10 を掛け、新しい数値を加算することで、最終的な数値が得られます。最後に、抽出した数値部分を出力します。
上記の紹介を通じて、Go 言語が文字列の数値部分を抽出するさまざまなメソッドを提供していることがわかります。特定のニーズに基づいて適切な方法を選択できます。どの方法を選択しても、文字列の数値部分を正確に抽出できるため、その後の処理が容易になります。
以上がGo言語で文字列から数値を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。