【问题标题】:How to slice a string using a delimiter如何使用分隔符对字符串进行切片
【发布时间】:2012-12-25 04:24:06
【问题描述】:

在 Go 中,如果我有一个字符串变量 s:

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

如何将其转换或拆分或分解为切片或字符串数​​组,使其变为:

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

【问题讨论】:

    标签: arrays go slice


    【解决方案1】:

    您应该为此使用 strings 包。

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

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

    【讨论】:

      【解决方案2】:

      如果你想忽略空元素,你可以使用 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())
         }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-03-24
        • 2021-03-12
        • 2018-06-15
        • 2012-07-13
        • 1970-01-01
        • 1970-01-01
        • 2014-07-08
        • 1970-01-01
        • 2012-11-20
        相关资源
        最近更新 更多