🪰

Go の stringsパッケージを使いこなす

2022/03/22に公開
import "strings"

stringsは主に文字列操作の機能がまとめられたパッケージです.

文字列結合

strings.Join()

文字列を要素にもつスライスなどに使用し,要素同士を任意の文字で埋めます(空文字を指定すれば純粋に結合します).

// 文字列を要素にもつスライス
slice := make([]string{"a", "b", "c"}, 3)

strings.Join(slice, "---")  // == "a---b---c"
strings.Join(slice, "")  // == "abc"

文字列分割

  • strings.Split()

  • strings.SplitAfter()

  • strings.SplitN()

戻り値は []string型になります

strings.Split("a,b,c,d,e", ",")  // == ["a" "b" "c" "d" "e"]

// 指定の文字の,後ろの部分で区切る
strings.SplitAfter("a,b,c,d,e", ",")  // == ["a," "b," "c," "d," "e"]

// 指定の文字で,指定の数未満の回数だけ区切る
strings.SplitN("a,b,c,d,e", ",", 3)  // == ["a" "b" "c,d,e"]

文字を繰り返して結合する

strings.Repeat()

strings.Repeat("abcde", 2)  // == "abcdeabcde"
strings.Repeat("abcde", 0)  // == ""

文字列置換

strings.Replace()

strings.Replace("AAAAA", "A", "X", 1)  // == "XAAAA"
strings.Replace("AAAAA", "A", "X", 2)  // == "XXAAA"
strings.Replace("AAAAA", "A", "X", -1)  // == "XXXXX"

strings.Replace("Java", "Java", "C++", 1)  // == "C++"

大文字・小文字の変換

  • strings.ToLower()

  • strings.ToUpper()

// 小文字にする
strings.ToLower("ABCDE")  // == "abcde"
strings.ToLower("X Y Z")  // == "x y z"

// 大文字にする
strings.ToUpper("abcde")  // == "ABCDE"
strings.ToUpper("x y z")  // == "X Y Z"

文字列から空白を取り除く

strings.TrimSpace()

全角スペースも同様に取り除かれます

strings.TrimSpace("     Hello!  ")  // == "Hello!"
strings.TrimSpace("     ←全角スペース→  ")  // == "←全角スペース→"

検索

インデックスを確認(部分一致)

strings.Index()

文字列の,最初に部分一致する位置のインデックスを取得します.

strings.Index("abcde", "a")  // == 0
strings.Index("abcde", "c")  // == 2

// 一致しない場合「-1」を返す
strings.Index("abcde", "aok")  // == -1
strings.Index("abcde", "x")  // == -1

一つでも一致すればインデックスを取得する関数はこちら(↓)

strings.IndexAny()

strings.IndexAny("abcde", "afh")  // == 0
strings.IndexAny("abcde", "cwi")  // == 2

// 一致しない場合「-1」を返す
strings.IndexAny("abcde", "ok")  // == -1
strings.IndexAny("abcde", "x")  // == -1

最後に部分一致する位置のインデックスを取得する関数はこちら(↓)

strings.LastIndex()

strings.LastIndex("abcdeabcde", "a")  // == 5
strings.LastIndex("abcdeabcde", "bc")  // == 6

// 一致しない場合「-1」を返す
strings.LastIndex("abcde", "aok")  // == -1
strings.LastIndex("abcde", "x")  // == -1

指定した文字列が含まれるか確認(全体一致)

strings.Contains()

strings.Contains("abcde", "abc")  // == true
strings.Contains("アイウエオ", "アイウ")  // == true
strings.Contains("abcde", "xxx")  // == false

// ここ注意です
strings.Contains("abcde", "")  // == true
strings.Contains("", "")  // == true

一つでも一致するか確認する関数はこちら(↓)

strings.ContainsAny()

strings.ContainsAny("abcde", "asf")  // == true
strings.ContainsAny("アイウエオ", "アジヘ")  // == true
strings.ContainsAny("abcde", "xax")  // == true
strings.ContainsAny("abcde", "xxx")  // == false

strings.ContainsAny("abcde", "")  // == true
strings.ContainsAny("", "")  // == true

指定した文字列から始まるか確認

strings.HasPrefix()

strings.HasPrefix("Go言語", "Go")  // == true
strings.HasPrefix("Go言語", "言語")  // == false

指定した文字列が使われている回数を数える

strings.Count()

strings.Count("abcde", "abc")  // == 1
strings.Count("abcabcabc", "abc")  // == 3
strings.Count("abcabcabc", "xxx")  // == 0

strings.Count("abcde", "")  // == 6
GitHubで編集を提案

Discussion

ログインするとコメントできます