我想知道是否有任何方法可以轻松地在空格处拆分字符串,除非空格在引号内?
例如,改变
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/