Golang中国

我想将一个复杂的字符串以,分割成字符串数组,可以通过strings.Split来实现,但是””包含起来的字符串要视为一个整体,里面的,不被当做分割符,如何实现?有现成的函数吗?
举个例子:
asf,ws,af ==>[0]=asf [1]=ws [2]=af
“asf,ws”,af ==>[0]=”asf,ws” [1]=af

2 回复
stevewang
#1 stevewang • 2016-10-20 14:30

没有现成的,只能自己实现。

package main

import (
    "fmt"
)

func Split(str string) []string {
    var result []string
    quoted := false
    pos := 0
    for i := 0; i < len(str); i++ {
        switch str[i] {
        case '"':
            quoted = !quoted
        case ',':
            if !quoted {
                result = append(result, str[pos:i])
                pos = i + 1
            }
        }
    }
    // 允许空字符串
    result = append(result, str[pos:len(str)])
    return result
}

func main() {
    s := Split(`"asf,ws",af`)
    fmt.Println(s, len(s))
}
lstarboy
#2 lstarboy • 2016-10-20 18:16

@stevewang 谢谢,我在库里没找到相应的函数,只能自己实现,跟你实现的差不多

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。