🪰
Go の stringsパッケージを使いこなす
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
Discussion