gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:27:11 34 4
gpt4 key购买 nike

我输入的字符串用逗号分隔。但是它可能在双引号中包含逗号,需要将其忽略。下面是示例字符串

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

下面是我用来在逗号上分割的代码,但是当逗号是双引号中的字符串的一部分时,它失败了。
s1 := strings.Split(s, "\"")
s2 := strings.Join(s1, "")
s3 := strings.Split(s2, ",")

因此,任何人都想如何解决此问题。

最佳答案

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

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

关于regex - Go:用逗号分隔字符串,但忽略双引号内的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59297737/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com