Go言語 Split 文字列を分割して配列にする

Go言語のSplitで文字列を分割して配列にするサンプルです。

目次

サンプル splitとは(文字列を分割して配列にする)
  カンマで区切る / 半角スペースで区切る / タブで区切る / 改行で区切る
  正規表現で区切り文字をORで指定
  末尾が区切り文字の時、最後は要素になる?

splitとは(文字列を分割して配列にする)

func Split(文字列, 区切り文字) []string

カンマで区切る

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行目のように空文字も要素として取得します。

関連の記事

Go言語 文字列を置換するサンプル(Replace)

△上に戻る