登录
首页 >  Golang >  Go问答

Go语言中的字符串分割技巧:忽略双引号内的逗号

来源:stackoverflow

时间:2024-03-13 13:27:26 465浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《Go语言中的字符串分割技巧:忽略双引号内的逗号》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

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

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

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

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

playground中运行

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>