Go言語のstringsパッケージの便利な関数まとめ(Trim・Splitなど)
生徒
「Goで文字列を扱うときに便利な方法はありますか?」
先生
「はい、Goにはstringsというパッケージがあって、文字列を処理するための便利な関数がたくさん用意されています。」
生徒
「例えばどんなことができるんですか?」
先生
「空白を取り除いたり、文字列を分割したり、大小文字を変換したりと、日常的に使う操作を簡単にできますよ。」
1. stringsパッケージとは?
Go言語のstringsパッケージは、文字列処理に役立つ標準ライブラリです。文字列を扱う場面はプログラムの中でとても多く、ユーザー入力の処理、テキストデータの加工、ファイル内容の解析などで頻繁に使われます。これを覚えると、文字列処理がぐっと楽になります。
2. Trim系関数で不要な文字を削除
Trimは文字列の先頭と末尾から指定した文字を削除します。特にstrings.TrimSpaceは前後の空白や改行を取り除くのによく使われます。
package main
import (
"fmt"
"strings"
)
func main() {
text := " Go言語 "
fmt.Println(strings.TrimSpace(text)) // "Go言語"
}
ユーザーが入力したデータは意図せず空白が入ることが多いので、比較や保存の前にTrimSpaceで整えるのが安心です。
3. Split関数で文字列を分割
strings.Splitは区切り文字で文字列を分割して配列にしてくれます。CSVのようなカンマ区切りのデータを処理するときに便利です。
package main
import (
"fmt"
"strings"
)
func main() {
data := "apple,banana,grape"
fruits := strings.Split(data, ",")
fmt.Println(fruits) // ["apple" "banana" "grape"]
}
Splitを使うことで、ひとつの文字列から複数の値を取り出せます。ユーザー入力を「名前,年齢,住所」といった形で処理するときにも役立ちます。
4. Join関数で配列を結合
分割した文字列を再びひとつの文字列にまとめたいときはstrings.Joinを使います。これは逆に「配列を文字列に変換する」操作です。
package main
import (
"fmt"
"strings"
)
func main() {
items := []string{"Go", "Python", "Java"}
result := strings.Join(items, " / ")
fmt.Println(result) // "Go / Python / Java"
}
配列を見やすく表示したいときや、ファイル保存用に文字列を作るときに重宝します。
5. Replace関数で文字列の置換
ある文字列の一部を別の文字列に置き換えるにはstrings.Replaceを使います。第三引数で新しい文字列を指定し、第四引数で置換回数を指定できます。すべて置換したいときは-1を指定します。
package main
import (
"fmt"
"strings"
)
func main() {
text := "I like Go. Go is fun."
newText := strings.Replace(text, "Go", "Golang", -1)
fmt.Println(newText) // "I like Golang. Golang is fun."
}
置換はデータの整形や変換に欠かせません。例えば、旧システムの表記を新システムに揃えるときなどに活用します。
6. Contains・HasPrefix・HasSuffixで部分一致
文字列の一部を探したいときにはstrings.Containsを使います。また、先頭一致を調べるHasPrefix、末尾一致を調べるHasSuffixも便利です。
package main
import (
"fmt"
"strings"
)
func main() {
s := "golang.org"
fmt.Println(strings.Contains(s, "lang")) // true
fmt.Println(strings.HasPrefix(s, "go")) // true
fmt.Println(strings.HasSuffix(s, ".org")) // true
}
URLやファイル名、メールアドレスの検証で使うことが多い関数です。
7. ToUpper・ToLowerで大小文字変換
文字列をすべて大文字や小文字に変換するにはstrings.ToUpperやstrings.ToLowerを使います。ユーザー入力を正規化して比較するのに役立ちます。
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.ToUpper("golang")) // "GOLANG"
fmt.Println(strings.ToLower("GOLANG")) // "golang"
}
検索機能やデータベース照合などで、大文字小文字の違いを吸収できるのが便利です。
8. 実用例:ユーザー入力処理に組み合わせる
実際のアプリケーションでは、入力値の前後空白を削除し、大小文字を統一し、区切り文字で分割するという流れでよく使います。
package main
import (
"fmt"
"strings"
)
func main() {
input := " Alice,BOB,carol "
trimmed := strings.TrimSpace(input)
lowered := strings.ToLower(trimmed)
names := strings.Split(lowered, ",")
fmt.Println(names) // ["alice" "bob" "carol"]
}
このように組み合わせることで、入力のゆらぎを吸収して安定したデータ処理が可能になります。