string - 在空格处拆分字符串,引号内除外

标签 string go

我想知道是否有任何方法可以轻松地在空格处拆分字符串,除非空格在引号内?

例如,改变

Foo bar 随机“字母 lol”的东西

进入

Foo, bar, random, "letters lol", stuff

最佳答案

想一想。您有一个逗号分隔值 (CSV) 文件格式的字符串,RFC4180 ,除了你的分隔符,在引号对之外,是一个空格(而不是逗号)。例如,

package main

import (
    "encoding/csv"
    "fmt"
    "strings"
)

func main() {
    s := `Foo bar random "letters lol" stuff`
    fmt.Printf("String:\n%q\n", s)

    // Split string
    r := csv.NewReader(strings.NewReader(s))
    r.Comma = ' ' // space
    fields, err := r.Read()
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Printf("\nFields:\n")
    for _, field := range fields {
        fmt.Printf("%q\n", field)
    }
}

Playground :https://play.golang.org/p/Ed4IV97L7H

输出:

String:
"Foo bar random \"letters lol\" stuff"

Fields:
"Foo"
"bar"
"random"
"letters lol"
"stuff"

关于string - 在空格处拆分字符串,引号内除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47489745/

相关文章:

postgresql - 分隔查询位置

go - 使用 Go 客户端库创建实例组时无法定义网络?

json - 在 Go 中解析 JSON(没有 Unmarshal)

go - 通过golang将消息以avro格式推送到kafka

java - 解析字符串

string - 是否可以在 SASS 的 @import 规则中使用变量?

c - 将 C 移植到 Go,在 if 检查中修改变量

java - 字符串数组中的随机元素

javascript - 在父 div 中获取文本

java - 为什么即使对于不相等的字符串,equalsignorecase 也会返回 true