输入字符串用逗号分隔。但它可能包含双引号内的逗号,需要忽略。下面是示例字符串
str := "\"age\": \"28\", \"favorite number\": \"26\", \"salary\": \"$1,234,108\""
下面是我用来拆分逗号的代码,但如果逗号是双引号中字符串的一部分,它就会失败。
s1 := strings.Split(s, "\"")
s2 := strings.Join(s1, "")
s3 := strings.Split(s2, ",")
所以任何解决这个问题的想法。
您可以使用下面的代码获取密钥和值
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])
}
}
在操场上奔跑
下面的函数将执行您想要的操作。
// 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.
问题内容: 我有一些输入如下所示: 逗号分隔的值可以是任何顺序。我想用逗号分割字符串;但是,在双引号内包含某些内容的情况下,我需要它既忽略逗号又去除引号(如果可能)。因此,基本上,输出将是以下字符串列表: 我已经看过其他一些答案,并且我认为正则表达式是最好的,但是我想出这些答案很糟糕。 问题答案: 拉瑟是对的。这是一个逗号分隔的值文件,因此您应该使用module。一个简单的例子:
问题内容: 我有一个模糊的字符串,像这样: 我想按逗号分割-但我需要忽略引号中的逗号。我怎样才能做到这一点?似乎正则表达式方法失败了;我想我可以在看到报价时手动扫描并进入其他模式,但是使用预先存在的库会很好。(编辑:我想我的意思是那些已经属于JDK或已经属于诸如Apache Commons之类的常用库的库。) 上面的字符串应分为: 注意:这不是CSV文件,它是文件中包含的单个字符串,具有较大的整体
问题内容: 我有这样一个字符串: 我想按逗号分割-但我需要忽略引号中的逗号。我怎样才能做到这一点?似乎正则表达式方法失败了;我想我可以在看到报价时手动扫描并进入其他模式,但是使用预先存在的库会很好。 上面的字符串应分为: 问题答案: 可以使用正则表达式 输出:
问题内容: 我正在寻找将其转换为6个元素的数组:a,b,c,“ d,e,f”,g,h。我正在尝试通过Javascript执行此操作。这是我到目前为止所拥有的: 但是现在,它会将双引号中的所有内容都分割开了,这是不正确的。 编辑:好的,抱歉,我对这个问题的措辞很差。给我一个字符串而不是数组。 我想使用“ split”功能将 其 转换为数组。 问题答案: 这就是我要做的。
问题内容: 我有一个像这样的字符串: 上面的字符串应分为: 问题答案: 我认为最简单的解决方案是处理输入字符串char-by-char: 例: 作为免费赠品,此解决方案还根据需要计算嵌套括号: 它还检查括号是否平衡(每个开放的括号都有相应的结束符)。
我有一根下面这样的弦- value1,value2,value3,value4,“value5,1234”,value6,value7,“value8”,value9,“value10,123.23”