2017-11-25 99 views

回答

1

嘗試this

​​

輸出:

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

[這也是非常好的](https://play.golang.org/p/NmruUq82qE),輸出:'Foo,bar,random,letters lol,stuff',區別在於:''字母大聲笑'' –

7

想想吧。您的逗號分隔值(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) 
    } 
} 

遊樂場:https://play.golang.org/p/Ed4IV97L7H

輸出:

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

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

這不是我真正想要的輸出。例如,我想要把'lol'寫在引號中,而其他的不是。另外,我在這個問題上做得不是很好...... 我打算用它來將blockdata 8539 58 584 {CustomName:「Foo」}'分成'blockdata','8539','58 ','584','{CustomName:「Foo」} ...應該提到這一點。 –

0

你可以使用regex

這(go playground)將覆蓋引號內和多個多個字所有的用例所列數據:

package main 

import (
    "fmt" 
    "regexp" 
) 

func main() { 
    s := `Foo bar random "letters lol" stuff "also will" work on "multiple quoted stuff"`  
    r := regexp.MustCompile(`[^\s"']+|"([^"]*)"|'([^']*)`) 
    arr := r.FindAllString(s, -1)  
    fmt.Println("your array: ", arr)  
} 

輸出將是:

[Foo, bar, random, "letters lol", stuff, "also will", work, on, "multiple quoted stuff"] 

如果您想了解更多關於正則表達式這裏是一個偉大的SO超方便的資源在最後回答 - Learning Regular Expressions

希望這有助於

相關問題