#8 Goで学ぶ文字列操作の基本
Goの文字列操作は、専用のパッケージを読み込んで使うのが基本です。この記事では、Goにおける文字列操作の基本と、よく使う関数を解説します。
文字列を連結する
greeting := "こんにちは、" + name + "さん"
単純な連結には+が使えますが、変数を埋め込んだ文字列を作る場合はfmt.Sprintfという機能がよく使われます。
greeting := fmt.Sprintf("こんにちは、%sさん", name)
%sという記号の場所に、後ろに指定した変数が埋め込まれます。数値を埋め込みたい場合は%dを使います。
よく使う文字列操作
文字列を扱う多くの機能は、stringsという専用のパッケージにまとめられています。
strings.ToUpper(name)大文字に変換するstrings.Replace(name, "A", "B", -1)文字を置き換えるstrings.Split(name, ",")指定した記号で分割するstrings.TrimSpace(name)前後の余分な空白を取り除くstrings.Contains(name, "太")特定の文字が含まれるか調べる
文字数を数える際の注意
Goで文字列の長さを調べる際、単純なlen(text)はバイト数を返すため、日本語のような複数バイト文字を含む文字列では、見た目の文字数と一致しません。
text := "こんにちは"
fmt.Println(len(text)) // バイト数(15)
fmt.Println(len([]rune(text))) // 文字数(5)
fmt.Println(utf8.RuneCountInString(text)) // 同じく文字数(5)
日本語を扱う際は、[]runeへの変換やutf8.RuneCountInStringを使うことを覚えておきましょう。
Goならではの注意点
他の言語ではtext.upper()のように、文字列に対して直接機能を呼び出す書き方が多いですが、Goではstrings.ToUpper(text)のように、専用パッケージの機能に文字列を渡す形で書きます。この書き方の違いは、他の言語の経験がある人ほど最初は戸惑うポイントです。日本語を扱う機会が多い場合は、バイト数と文字数の違いに特に注意しましょう。
まとめ
Goの文字列操作はfmt.Sprintfによる埋め込みと、stringsパッケージの機能が基本です。「文字列.機能()」ではなく「パッケージ.機能(文字列)」という書き方と、日本語のバイト数・文字数の違いに慣れましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Goをもっと学びたい方には「Go言語入門」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿