Go言語の標準ライブラリstringsパッケージについて調べてみた ~その2~
前回の記事はこちら:Go言語の標準ライブラリstringsパッケージについて調べてみた ~その1~
今回も引き続き、標準ライブラリについて理解を深めるためにstringsパッケージについて調べてみました。
Count
Count
はある文字列の中に、指定した文字列がいくつあるかを数えます。早速コードを書いてみます。
fmt.Println(strings.Count("abcdefg", "a")) // 1
fmt.Println(strings.Count("abcdefg", "abc")) // 1
fmt.Println(strings.Count("abcdefg", "ace")) // 0
fmt.Println(strings.Count("i my me mine", "m")) // 3
fmt.Println(strings.Count("aaaaa", "aa")) // 2
fmt.Println(strings.Count("teenage", "e")) // 3
fmt.Println(strings.Count("abc", "")) // 4
aaaaa
にaa
は二つとカウントされています。関数の説明に、重複しないようにカウントするように書いてあるのでこのような結果になっているようです。また、第二引数に空文字列を指定すると、文字数 + 1の結果が返されるようです。どういう理屈でプラス1されるのか気になります。
Cut
Cut
は指定されたセパレータで文字列を分割する関数のようです。返り値は三つで、セパレータより前の部分の文字列、セパレータより後ろ部分の文字列、セパレータが見つかったかを表すbool値です。
s := "abcdef"
sep := "cd"
before, after, found := strings.Cut(s, sep)
if found {
fmt.Printf("before: %v\nafter: %v\n", before, after)
// before: ab
// after: ef
}
s = "weekend"
sep = "e"
before, after, found = strings.Cut(s, sep)
if found {
fmt.Printf("before: %v\nafter: %v\n", before, after)
// before: w
// after: ekend
}
s = "This is a book."
sep = "are"
before, after, found = strings.Cut(s, sep)
if found {
fmt.Printf("before: %v\nafter: %v\n", before, after)
} else {
fmt.Println("not found") // not found
}
weekend
のように、セパレータの文字列が複数含まれる文字列に対しては一番最初の文字列を対象にして切り分けるようです。
CutPrefix
CutPrefix
は、指定されたプレフィックス(接頭辞)が文字列の先頭にあるかどうかを確認し、それが存在する場合、プレフィックスを削除して残りの文字列を返す関数のようです。
s := "forever"
prefix := "for"
after, found := strings.CutPrefix(s, prefix)
if found {
fmt.Println(after) // ever
} else {
fmt.Println("not found")
}
s = "forever"
prefix = "ever"
after, found = strings.CutPrefix(s, prefix)
if found {
fmt.Println(after)
} else {
fmt.Println("not found") // not found
}
CutSuffix
CutSuffix
は、指定されたサフィックス(接尾辞)が文字列の末尾にあるかどうかを確認し、それが存在する場合、サフィックスを削除して残りの文字列を返す関数のようです。
s := "forever"
suffix := "ever"
before, found := strings.CutSuffix(s, suffix)
if found {
fmt.Println(before) // for
}
s = "forever"
suffix = "for"
before, found = strings.CutSuffix(s, suffix)
if found {
fmt.Println(before)
} else {
fmt.Println("not found") // not found
}
さいごに
今回はstringsパッケージのCount
からCutSuffix
までの関数の使い方を調べました。今回の内容はわりと直感的にすぐ理解できるわかりやすい関数だったかと思います。また、コーディングテスト等で入力値を整えたりする際に便利だと思いました。
この記事を書いた人

- 事業開発部 web application engineer
-
これまで農業、士業と経験し、まったく異業種のエンジニアとしてアーティスに入社。
現在は事業開発部でバックエンドエンジニアとして仕事に従事。可読性の高いコードが書けるよう日々勉強中。趣味は一人旅。
この執筆者の最新記事
関連記事
関連する記事はありません
最新記事
FOLLOW US
最新の情報をお届けします
- facebookでフォロー
- Twitterでフォロー
- Feedlyでフォロー