#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本