Go で、文字列変数 s がある場合:
var s string = "a,b,c,d,e"
それをスライスまたは文字列の配列に変換、分割、または分解して、次のようにするにはどうすればよいですか。
arr[0] = "a"
...
arr[4] = "e"
strings
そのためにパッケージを使用する必要があります。
stringSlice := strings.Split(s, ",")
空の要素を無視したい場合は、 strings#FieldsFuncを使用できます。
package main
import (
"fmt"
"strings"
)
func main() {
s := ",a,,b,c,d,e,"
arr := strings.FieldsFunc(s, func(r rune) bool {
return r == ','
})
fmt.Printf("%q\n", arr) // ["a" "b" "c" "d" "e"]
}
またはbufio#Scanner.Split :
package main
import (
"bufio"
"strings"
)
func comma(data []byte, eof bool) (int, []byte, error) {
if eof { return 0, nil, nil }
a := -1
for b, c := range data {
if c == ',' {
if a >= 0 {
return b+1, data[a:b], nil
}
} else if a < 0 {
a = b
}
}
return len(data), data, nil
}
func main() {
s := ",a,,b,c,d,e"
arr := bufio.NewScanner(strings.NewReader(s))
arr.Split(comma)
for arr.Scan() {
println(arr.Text())
}
}