亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在golang中掃描以“:”分隔的字符串

在golang中掃描以“:”分隔的字符串

Go
拉莫斯之舞 2023-02-14 17:43:25
我需要將字符串掃描23.584950:58.353603:an address, str:a place, name 成:type Origin struct {    Lat     float64 `json:"lat" binding:"required"`    Lng     float64 `json:"lng" binding:"required"`    Address string  `json:"address" binding:"required"`    Name    string  `json:"name" binding:"required"`}我的代碼:package mainimport "fmt"type Origin struct {    Lat     float64 `json:"lat" binding:"required"`    Lng     float64 `json:"lng" binding:"required"`    Address string  `json:"address" binding:"required"`    Name    string  `json:"name" binding:"required"`}func (o *Origin) ParseString(str string) error {    if str == "" {        return nil    }    _, err := fmt.Sscanf(str, "%f:%f:%[^:]:%[^/n]", &o.Lat, &o.Lng, &o.Address, &o.Name)    if err != nil {        return fmt.Errorf("parsing origin: %s, input:%s", err.Error(), str)    }    return nil}func main() {    o := &Origin{}    o.ParseString("23.584950:58.353603:address, text:place, name, text")    fmt.Println(o)}https://go.dev/play/p/uUTNyx2cDFB但是,structo打印出:&{23.58495 58.353603  }。地址和姓名未正確掃描。Sscanf正確解析此字符串的正確格式是什么?
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

您正在使用正則表達式來捕獲輸入,同時使用fmt.Scanff. fmt.Scanff不支持正則表達式。如果要使用正則表達式,請使用regexp包。


或者你可以使用一個簡單的strings.Split并將輸入解析為正確的類型:


func (o *Origin) ParseString2(str string) error {

    if str == "" {

        return nil

    }

    parts := strings.Split(str, ":")

    if len(parts) != 4 {

        return errors.New("expected format '...:...:...:...")

    }


    f, err := strconv.ParseFloat(parts[0], 64)

    if err != nil {

        return err

    }

    o.Lat = f


    f, err = strconv.ParseFloat(parts[1], 64)

    if err != nil {

        return err

    }

    o.Lng = f

    o.Address = parts[2]

    o.Name = parts[3]


    return nil

}


查看完整回答
反對 回復 2023-02-14
  • 1 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號