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

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

Go:用逗號分割字符串,但忽略雙引號內的逗號

Go:用逗號分割字符串,但忽略雙引號內的逗號

Go
MMTTMM 2023-08-14 14:47:38
我輸入了用逗號分隔的字符串。但它可能包含雙引號內的逗號,需要忽略。下面是示例字符串str := "\"age\": \"28\", \"favorite number\": \"26\", \"salary\": \"$1,234,108\""下面是我用逗號分割的代碼,但當逗號是雙引號中字符串的一部分時,它會失敗。s1 := strings.Split(s, "\"") s2 := strings.Join(s1, "") s3 := strings.Split(s2, ",")所以任何想法如何解決這個問題。
查看完整描述

2 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

以下功能將執行您想要的操作。


// SplitAtCommas split s at commas, ignoring commas in strings.

func SplitAtCommas(s string) []string {

    res := []string{}

    var beg int

    var inString bool


    for i := 0; i < len(s); i++ {

        if s[i] == ',' && !inString {

            res = append(res, s[beg:i])

            beg = i+1

        } else if s[i] == '"' {

            if !inString {

                inString = true

            } else if i > 0 && s[i-1] != '\\' {

                inString = false

            }

        }

    }

    return append(res, s[beg:])

}

完整的示例可以在這里找到: https: //play.golang.org/p/f5jceIm4nbE。


查看完整回答
反對 回復 2023-08-14
?
肥皂起泡泡

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

您可以使用下面的代碼來獲取鍵和值


package main


import (


"fmt"

"strings"


)


func main() {

  str := "\"age\": \"28\", \"favorite number\": \"26\", \"salary\": \"$1,234,108\""

  arr := strings.Split(str,`",`)

  for _, v := range arr {

     val := strings.Split(v,`:`)

     fmt.Println("Key:",val[0],"value:",val[1])

  }

}

在操場上奔跑



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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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