[Golang]文字列(string)を区切り文字で分割した配列に変換するには?

Go

どうも、ちょげ(@chogetarou)です。

文字列(string)を区切り文字で分割した配列に変換する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

文字列(string)を区切り文字で分割した配列に変換する方法は、3つあります。

Split()

ひとつめは、Split()を使う方法です。

まず、stringsをインポートします。

import "strings"

次に、stringsからSplit()を呼び出します。

そして、Split()の第1引数に対象の文字列、第2引数に区切り文字を指定します。

//text=対象の文字列, sep=区切り文字
result := strings.Split(text, sep)

上記のSplit()は、引数に指定した文字列(string)を第2引数の区切り文字で分割した配列に変換します。

分割の回数に制限を付けたい場合は、SplitN()を使います。

SplitN()は、第3引数で分割の回数を指定できます。

//第3引数で分割の回数を指定
result := strings.SplitN(text, sep, N)

使用例

package main

import (
	"fmt"
	"strings"
)

func main() {
	text := "He-l-lo,W-or-ld"

	result := strings.Split(text, "-")

	fmt.Printf("分割した配列: %q", result)
}
出力:
分割した配列: ["He" "l" "lo,W" "or" "ld"]

SplitAfter()

ふたつめは、SplitAfter()を使う方法です。

まず、stringsをインポートします。

import "strings"

次に、stringsからSplit()を呼び出します。

そして、Split()の第1引数に対象の文字列、第2引数に区切り文字を指定します。

//text=対象の文字列, sep=区切り文字
result := strings.Split(text, sep)

上記のSplit()は、引数に指定した文字列(string)を第2引数の区切り文字で分割した配列に変換します。

分割の回数に制限を付けたい場合は、SplitN()を使います。

SplitN()は、第3引数で分割の回数を指定できます。

//第3引数で分割の回数を指定
result := strings.SplitN(text, sep, N)

使用例

package main

import (
	"fmt"
	"strings"
)

func main() {
	text := "He-l-lo,W-or-ld"

	result := strings.Split(text, "-")

	fmt.Printf("分割した配列: %q", result)
}
出力:
分割した配列: ["He" "l" "lo,W" "or" "ld"]

FieldsFunc()

みっつめは、FieldsFunc()を使う方法です。

まず、stringsをインポートします。

import "strings"

次に、stringsからSplit()を呼び出します。

そして、Split()の第1引数に対象の文字列、第2引数に1つの引数を持つ関数を指定します。

関数で、引数が区切り文字の場合に「true」となる条件式を返します。

//text=対象の文字列, condition=条件式
result := strings.FieldsFunc(text, func(x rune) bool {
    return condition
})

上記のFieldsFunc()は、第1引数に指定した文字列(string)を、関数で「true」を返した区切り文字で分割した配列に変換します。

FieldsFunc()の第2引数の関数は、引数の型が「rune」であることに注意してください。

使用例

package main

import (
	"fmt"
	"strings"
	"unicode"
)

func main() {
	text := "He l lo,  W or ld"
	
	//空白で分割
	result := strings.FieldsFunc(text, func(x rune) bool {
		return unicode.IsSpace(x) //空白の場合にtrue
	})

	fmt.Printf("分割した配列: %q", result)
}
出力:
分割した配列: ["He" "l" "lo," "W" "or" "ld"]
スポンサーリンク

まとめ

文字列(string)を区切り文字で分割した配列に変換する方法は、次の3つです。

  • Split()を使う方法
    result := strings.Split(text, sep)
  • Split()を使う方法
    result := strings.Split(text, sep)
  • FieldsFunc()()を使う方法
    result := strings.FieldsFunc(text, func(x rune) bool { return condition })

コメント

タイトルとURLをコピーしました