at backyard

Color my life with the chaos of trouble.

文字列内の数値と文字列を分割させたい(Goのfmt.Sscanf)

例えば 5個の林檎 というようにスペースを挟まずに数値と文字列が連なったテキストを分割させたいケースがあったとする。
このような場合、Goではどう対応できるかを調べた際の備忘録。

下記のスタックオーバーフローを参考にした。 どうやらこういうケースでは fmt.Sscanf が利用できるようだ。

stackoverflow.com

Goのドキュメント

https://pkg.go.dev/fmt#Sscanf

以下サンプルコード。

package main

import (
    "fmt"
    "log"
)

func main() {
    str := "5個の林檎"

    var num int
    var text string

    n, err := fmt.Sscanf(str, "%d%s", &num, &text)
    if err != nil {
        log.Fatalln(err)
    }

    fmt.Println(n)
    fmt.Println(num)
    fmt.Println(text)
}

実行結果は以下のようになる。
一行目に表示されている返り値は、正常に解析された項目の数となる。

2
5
個の林檎