44

Go で、文字列変数 s がある場合:

var s string = "a,b,c,d,e"

それをスライスまたは文字列の配列に変換、分割、または分解して、次のようにするにはどうすればよいですか。

arr[0] = "a"
...
arr[4] = "e"
4

2 に答える 2

71

stringsそのためにパッケージを使用する必要があります。

stringSlice := strings.Split(s, ",")

http://play.golang.org/p/UKZbcuJUPP

于 2013-01-10T17:30:22.480 に答える
1

空の要素を無視したい場合は、 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())
   }
}
于 2021-07-11T20:16:29.327 に答える