前書き
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
を使用すると、文字列が特定の文字セットで開始または終了するかどうかを確認できます。
たとえば、文字列"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のすべての文字列では大文字と小文字が区別されます。 これは、Sammy
がsammy
と同じではないことを意味します。
#
小文字のs
を使用してSammy Shark
からカウントを取得することは、大文字のS
を使用することと同じではありません。
fmt.Println(strings.Count(ss, "s"))
Output0
S
はs
とは異なるため、返されるカウントは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.Join
、strings.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.Join
、strings.Split
、およびstrings.ReplaceAll
を使用すると、Goで文字列を操作するためのより優れた制御が可能になります。
結論
このチュートリアルでは、Goプログラムで文字列を操作および操作するために使用できる文字列データ型の一般的な文字列パッケージ関数をいくつか紹介しました。
Understanding Data Typesで他のデータ型について詳しく学び、An Introduction to Working with Stringsで文字列についてもっと読むことができます。