Go言語のSplitで文字列を分割して配列にするサンプルです。
目次
サンプル | splitとは(文字列を分割して配列にする) |
カンマで区切る / 半角スペースで区切る / タブで区切る / 改行で区切る | |
正規表現で区切り文字をORで指定 | |
末尾が区切り文字の時、最後は要素になる? |
splitとは(文字列を分割して配列にする)
func Split(文字列, 区切り文字) []string |
- 文字列を区切り文字で分割してstringの配列を返します。
- 正規表現を使用する場合は、MustCompileを使用します。
- 以下はGo言語公式のSplitとMustCompileのリンクです。
https://golang.org/pkg/strings/#Split
https://golang.org/pkg/regexp/#MustCompile
カンマで区切る
package main
import (
"fmt"
"strings"
)
func main() {
str1 := "赤,黄,青"
arr1 := strings.Split(str1, ",")
for _, s := range arr1 {
fmt.Printf("%s\n", s) // 赤 黄 青
}
fmt.Println(len(arr1)) // 3
}
10行目は、文字列をカンマで区切って配列にしています。
半角スペースで区切る
package main
import (
"fmt"
"strings"
)
func main() {
color1 := "赤 黄 青"
arr1 := strings.Split(color1, " ")
for _, s := range arr1 {
fmt.Printf("%s\n", s) // 赤 黄 青
}
fmt.Println(len(arr1)) // 3
}
10行目は、文字列を半角スペースで区切って配列にしています。
タブで区切る
package main
import (
"fmt"
"strings"
)
func main() {
color1 := "赤 黄 青"
arr1 := strings.Split(color1, "\t")
for _, s := range arr1 {
fmt.Printf("%s\n", s) // 赤 黄 青
}
fmt.Println(len(arr1)) // 3
}
区切り文字にバックスラッシュ(円記号)+tでタブを指定しています。
改行で区切る
package main
import (
"fmt"
"regexp"
)
func main() {
str1 := "赤と黄\r\n青と緑\n白と黒"
reg := "\r\n|\n"
arr1 := regexp.MustCompile(reg).Split(str1, -1)
for _, s := range arr1 {
fmt.Printf("%s\n", s) // 赤と黄 青と緑 白と黒
}
fmt.Println(len(arr1)) // 3
}
正規表現で改行を指定しています。
\r\nは復帰改行(CRLF)、\nは改行(LF)、パイプ(|)はorを意味します。
正規表現で区切り文字をORで指定
package main
import (
"fmt"
"regexp"
)
func main() {
str1 := "1:a,2:b,3:c"
reg := "[,:]"
arr1 := regexp.MustCompile(reg).Split(str1, -1)
for _, s := range arr1 {
fmt.Printf("%s\n", s) // 1 a 2 b 3 c
}
fmt.Println(len(arr1)) // 6
}
10行目の[,:]は、カンマ(,)またはコロン(:)という正規表現です。
末尾が区切り文字の時、最後は要素になる?
package main
import (
"fmt"
"strings"
)
func main() {
color1 := "a,b,c,,"
arr1 := strings.Split(color1, ",")
for _, s := range arr1 {
fmt.Printf("%s\n", s) //「a」「b」「c」「」「」
}
fmt.Println(len(arr1)) // 5
}
9行目は、末尾がカンマで終わっています。
結果は、13,15行目のように空文字も要素として取得します。
関連の記事