Goの文字列パッケージの概要

前書き

Goのstringパッケージには、string data typeを操作するために使用できるいくつかの関数があります。 これらの関数を使用すると、文字列を簡単に変更および操作できます。 関数は、コードの要素に対して実行するアクションであると考えることができます。 組み込み関数とは、Goプログラミング言語で定義されており、すぐに使用できる関数です。

このチュートリアルでは、Goで文字列を操作するために使用できるいくつかの異なる関数を確認します。

文字列を大文字と小文字にする

関数strings.ToUpperおよびstrings.ToLowerは、元の文字列のすべての文字が大文字または小文字に変換された文字列を返します。 文字列は不変のデータ型なので、返される文字列は新しい文字列になります。 文字列内の文字以外の文字は変更されません。

文字列"Sammy Shark"をすべて大文字に変換するには、strings.ToUpper関数を使用します。

ss := "Sammy Shark"
fmt.Println(strings.ToUpper(ss))
OutputSAMMY SHARK

小文字に変換するには:

fmt.Println(strings.ToLower(ss))
Outputsammy shark

stringsパッケージを使用しているため、最初にそれをプログラムにインポートする必要があります。 文字列を大文字と小文字に変換するには、プログラム全体が次のようになります。

package main

import (
    "fmt"
    "strings"
)

func main() {
    ss := "Sammy Shark"
    fmt.Println(strings.ToUpper(ss))
    fmt.Println(strings.ToLower(ss))
}

strings.ToUpper関数とstrings.ToLower関数を使用すると、大文字と小文字を区別することで、文字列の評価と比較が簡単になります。 たとえば、ユーザーが名前をすべて小文字で記述した場合でも、すべて大文字のバージョンと照合してデータベースに名前が含まれているかどうかを判断できます。

文字列検索関数

stringsパッケージには、文字列に特定の文字シーケンスが含まれているかどうかを判断するのに役立つ関数がいくつかあります。

関数 Use

strings.HasPrefix

文字列を最初から検索します

strings.HasSuffix

文字列を最後から検索します

strings.Contains

文字列内の任意の場所を検索します

strings.Count

文字列が表示される回数をカウントします

strings.HasPrefixおよびstrings.HasSuffixを使用すると、文字列が特定の文字セットで開始または終了するかどうかを確認できます。

たとえば、文字列"Sammy Shark"Sammyで始まり、Sharkで終わるかどうかを確認するには、次のようにします。

ss := "Sammy Shark"
fmt.Println(strings.HasPrefix(ss, "Sammy"))
fmt.Println(strings.HasSuffix(ss, "Shark"))
Outputtrue
true

strings.Contains関数を使用して、"Sammy Shark"にシーケンスShが含まれているかどうかを確認します。

fmt.Println(strings.Contains(ss, "Sh"))
Outputtrue

最後に、文字SがフレーズSammy Sharkに何回出現するかを確認するには、次のようにします。

fmt.Println(strings.Count(ss, "S"))
Output2

[.note]#Note:Goのすべての文字列では大文字と小文字が区別されます。 これは、Sammysammyと同じではないことを意味します。

小文字のsを使用してSammy Sharkからカウントを取得することは、大文字のSを使用することと同じではありません。

fmt.Println(strings.Count(ss, "s"))
Output0

Ssとは異なるため、返されるカウントは0になります。

文字列関数は、プログラム内の文字列を比較または検索する場合に役立ちます。

文字列の長さの決定

組み込み関数len()は、文字列の文字数を返します。 この関数は、パスワードの最小長または最大長を強制する必要がある場合、または略語として使用するために特定の制限内に収まるように大きな文字列を切り捨てる必要がある場合に役立ちます。

この機能を示すために、文の長さの文字列の長さを見つけます:

import (
    "fmt"
    "strings"
)

func main() {
        openSource := "Sammy contributes to open source."
        fmt.Println(len(openSource))
}
Output33

変数openSourceを文字列"Sammy contributes to open source."と等しく設定し、その変数をlen(openSource)を使用してlen()関数に渡しました。 最後に、関数をfmt.Println()関数に渡して、プログラムの出力を画面に表示できるようにしました。

len()関数は、文字、数字、空白文字、記号など、二重引用符で囲まれたすべての文字をカウントすることに注意してください。

文字列操作のための関数

strings.Joinstrings.Split、およびstrings.ReplaceAll関数は、Goで文字列を操作するためのいくつかの追加の方法です。

strings.Join関数は、文字列のスライスを新しい単一の文字列に結合するのに役立ちます。

文字列のスライスからコンマ区切りの文字列を作成するには、次のようにこの関数を使用します。

fmt.Println(strings.Join([]string{"sharks", "crustaceans", "plankton"}, ","))
Outputsharks,crustaceans,plankton

新しい文字列の文字列値の間にコンマとスペースを追加する場合は、コンマの後に空白を使用して式を書き換えることができます:strings.Join([]string{"sharks", "crustaceans", "plankton"}, ", ")

文字列を結合できるように、文字列を分割することもできます。 これを行うには、strings.Split関数を使用して、スペースで分割します。

balloon := "Sammy has a balloon."
s := strings.Split(balloon, " ")
fmt.Println(s)
Output[Sammy has a balloon]

出力は文字列のスライスです。 strings.Printlnを使用したため、出力を見てもわかりにくいです。 それが実際に文字列のスライスであることを確認するには、fmt.Printf関数を%q動詞とともに使用して、文字列を引用します。

fmt.Printf("%q", s)
Output["Sammy" "has" "a" "balloon."]

strings.Splitに加えて別の便利な関数はstrings.Fieldsです。 違いは、strings.Fieldsはすべての空白を無視し、文字列内の実際のfieldsのみを分割することです。

data := "  username password     email  date"
fields := strings.Fields(data)
fmt.Printf("%q", fields)
Output["username" "password" "email" "date"]

strings.ReplaceAll関数は、元の文字列を受け取り、何らかの置換を加えて更新された文字列を返すことができます。

サミーが持っていた風船がなくなったとしましょう。 サミーはこのバルーンを持っていないので、新しい文字列で部分文字列"has"を元の文字列balloonから"had"に変更します。

fmt.Println(strings.ReplaceAll(balloon, "has", "had"))

括弧内の最初は、元の文字列を格納する変数のballoonです。 2番目の部分文字列"has"は置き換えたいものであり、3番目の部分文字列"had"はその2番目の部分文字列を置き換えるものです。 これをプログラムに組み込むと、出力は次のようになります。

OutputSammy had a balloon.

文字列関数strings.Joinstrings.Split、およびstrings.ReplaceAllを使用すると、Goで文字列を操作するためのより優れた制御が可能になります。

結論

このチュートリアルでは、Goプログラムで文字列を操作および操作するために使用できる文字列データ型の一般的な文字列パッケージ関数をいくつか紹介しました。

Understanding Data Typesで他のデータ型について詳しく学び、An Introduction to Working with Stringsで文字列についてもっと読むことができます。