序章

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

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

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

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

文字列を変換するには "Sammy Shark" すべて大文字にするには、 strings.ToUpper 関数:

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

小文字に変換するには:

fmt.Println(strings.ToLower(ss))
Output
sammy shark

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

package main

import (
	"fmt"
	"strings"
)

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

The strings.ToUpperstrings.ToLower 関数を使用すると、大文字と小文字を一貫させることで、文字列の評価と比較が簡単になります。 たとえば、ユーザーが名前をすべて小文字で書き込んだ場合でも、すべて大文字のバージョンと照合することで、名前がデータベースにあるかどうかを判断できます。

文字列検索関数

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

働き 使用する
strings.HasPrefix 文字列を最初から検索します
strings.HasSuffix 文字列を最後から検索します
strings.Contains 文字列内の任意の場所を検索します
strings.Count 文字列が表示される回数をカウントします

The strings.HasPrefixstrings.HasSuffix 文字列が特定の文字セットで開始または終了するかどうかを確認できます。

たとえば、文字列かどうかを確認するには "Sammy Shark" で始まる Sammy そしてで終わる Shark:

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

あなたは strings.Contains かどうかをチェックする関数 "Sammy Shark" シーケンスが含まれています Sh:

fmt.Println(strings.Contains(ss, "Sh"))
Output
true

最後に、手紙が何回あるかを確認します S フレーズに登場 Sammy Shark:

fmt.Println(strings.Count(ss, "S"))
Output
2

注:Goのすべての文字列では大文字と小文字が区別されます。 この意味は Sammy と同じではありません sammy.

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

fmt.Println(strings.Count(ss, "s"))
Output
0

なぜなら S とは異なります s、返されるカウントは 0.

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

文字列の長さの決定

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

この関数を示すために、文の長さの文字列の長さを見つけます。

import (
	"fmt"
	"strings"
)

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

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

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

文字列操作のための関数

The strings.Join, strings.Split、 と strings.ReplaceAll 関数は、Goで文字列を操作するためのいくつかの追加の方法です。

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

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

fmt.Println(strings.Join([]string{"sharks", "crustaceans", "plankton"}, ","))
Output
sharks,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.Splitstrings.Fields. 違いは strings.Fields すべての空白を無視し、実際の空白のみを分割します fields 文字列内:

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

The strings.ReplaceAll 関数は元の文字列を受け取り、いくつかの置換を含む更新された文字列を返すことができます。

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

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

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

Output
Sammy had a balloon.

文字列関数を使用する strings.Join, strings.Split、 と strings.ReplaceAll Goで文字列を操作するためのより優れた制御を提供します。

結論

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

他のデータ型の詳細については、データ型の理解を参照してください。文字列の詳細については、文字列の操作の概要を参照してください。