为了账号安全,请及时绑定邮箱和手机立即绑定

Go:用逗号分割字符串,但忽略双引号内的逗号

Go:用逗号分割字符串,但忽略双引号内的逗号

Go
繁花如伊 2022-04-26 10:29:51
我有用逗号分隔的输入字符串。但它可能包含需要忽略的双引号内的逗号。下面是示例字符串str := "\"age\": \"28\", \"favorite number\": \"26\", \"salary\": \"$1,234,108\""下面是我用来拆分逗号的代码,但它在逗号是双引号字符串的一部分时失败了。s1 := strings.Split(s, "\"")s2 := strings.Join(s1, "")s3 := strings.Split(s2, ",")所以任何想法如何解决这个问题。
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

以下功能将执行您想要的操作。


// 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。


查看完整回答
反对 回复 2022-04-26
?
偶然的你

TA贡献1841条经验 获得超3个赞

您可以使用以下代码获取键和值


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])

  }

}


查看完整回答
反对 回复 2022-04-26
  • 2 回答
  • 0 关注
  • 502 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号