Goの文字列パッケージの概要
序章
Goのstringパッケージには、文字列データ型を操作するために使用できるいくつかの関数があります。 これらの関数を使用すると、文字列を簡単に変更および操作できます。 関数は、コードの要素に対して実行するアクションと考えることができます。 組み込み関数は、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
パッケージには、文字列に特定の文字シーケンスが含まれているかどうかを判断するのに役立つ多くの関数があります。
働き | 使用する |
---|---|
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
注: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
に加えて、もう1つの便利な機能は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プログラムで文字列を操作および操作するために使用できる、文字列データ型の一般的な文字列パッケージ関数のいくつかについて説明しました。
他のデータ型の詳細については、データ型の理解を参照してください。文字列の詳細については、文字列の操作の概要を参照してください。