Go言語のstringsパッケージのTrim系の関数を一気に理解しよう!
プログラミングにおいて、テキストデータの処理は避けて通れない道です。特に、余分な空白や不要な文字を取り除く作業は、データの整合性を保つために欠かせません。
今回は、Go言語のstringsパッケージに含まれる、テキストをトリミングするための便利な関数群について、実例を交えながら解説していきます。これらの関数を使いこなせば、あなたのコードもより洗練され、プロフェッショナルなものになるでしょう!
Trim: 文字列の両端から指定した文字を取り除く
「Trim」関数は、文字列の先頭と末尾から、指定したセットの文字を削除するための関数です。使用方法は簡単!第一引数に対象の文字列、第二引数に削除したい文字セットを指定するだけです。
では、実際のコードを見てみましょう。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package main import ( "fmt" "strings" ) func main() { // 削除対象の文字列 trimChars := " !." // 元の文字列 originalString := " Hello, Gophers! " // Trimを使用 result := strings.Trim(originalString, trimChars) fmt.Println(result) } |
出力結果
Hello, Gophers
この例では、" Hello, Gophers! "という文字列から、空白(" ")、感嘆符("!")、およびピリオド(".")を取り除いています。その結果、"Hello, Gophers"というトリムされた文字列が得られます。
なお、Trimは指定した文字のセットを一つずつチェックし、それらが文字列の先頭または末尾にある場合にのみ削除します。それ以外の位置にある同じ文字は削除されませんので注意してください。
TrimSpace: 空白の削除に特化した関数
「TrimSpace」は、その名の通り、文字列の先頭および末尾から空白(スペース、タブ、改行など)を取り除くための関数です。この関数は、ユーザー入力のサニタイズや、ファイルから読み込んだデータの整形に非常に便利です。
具体的な使用方法を見てみましょう。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package main import ( "fmt" "strings" ) func main() { // 元の文字列 originalString := "\n\n GoLang \t" // TrimSpaceを使用 result := strings.TrimSpace(originalString) fmt.Println(result) } |
出力結果
GoLang
この例では、"\n\n GoLang \t"という文字列から、先頭と末尾の空白(この場合は改行とタブ)を取り除いています。その結果、"GoLang"というトリムされた文字列が得られます。
TrimSpaceは、Unicodeの定義に従って「空白」と判断される全ての文字を削除対象とします。
TrimFunc: カスタム条件で文字をトリミング
「TrimFunc」は、カスタム関数を用いて文字列のトリミングを行うための関数です。つまり、あなたの独自の条件で文字を削除することができます。
例を見て理解を深めましょう。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
package main import ( "fmt" "strings" ) func main() { // 元の文字列 originalString := "123Hello, Gophers!456" // 削除条件を定義する関数 trimFunc := func(c rune) bool { return strings.ContainsRune("123456", c) } // TrimFuncを使用 result := strings.TrimFunc(originalString, trimFunc) fmt.Println(result) } |
出力結果
Hello, Gophers!
この例では、"123Hello, Gophers!456"という文字列から、数字の'1'、'2'、'3'、'4'、'5'、'6'を取り除いています。その結果、"Hello, Gophers!"というトリムされた文字列が得られます。
TrimFuncは、あなたが定義した関数に基づいて文字を削除します。この関数は、対象の文字(rune)を引数として取り、bool値を返します。返された値が「true」の場合、その文字はトリミングされます。
TrimLeft: 文字列の左端から指定した文字を削除
「TrimLeft」関数は、文字列の左端から指定したセットの文字を削除するためのものです。第一引数には対象の文字列、第二引数には削除したい文字セットを指定します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package main import ( "fmt" "strings" ) func main() { originalString := "!!Hello, Gophers!!!" charsToRemove := "!" result := strings.TrimLeft(originalString, charsToRemove) fmt.Println(result) } |
出力結果
Hello, Gophers!!!
このコードでは、「!」が左端から削除され、「Hello, Gophers!!!」が出力されます。TrimLeftは左端からのみ文字を削除しますので、文字列の右端にある「!」はそのまま残ります。
TrimLeftFunc: 左端からカスタム条件で文字を削除
「TrimLeftFunc」関数を使用すると、カスタム関数を定義して、その関数に一致する文字を文字列の左端から削除することができます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package main import ( "fmt" "strings" ) func main() { originalString := "123Hello, Gophers!123" trimFunc := func(c rune) bool { return strings.ContainsRune("123", c) } result := strings.TrimLeftFunc(originalString, trimFunc) fmt.Println(result) } |
出力結果
Hello, Gophers!123
この例では、"123"の各文字が左端から削除され、「Hello, Gophers!123」が出力されます。
TrimPrefix: 文字列の先頭からプレフィックスを削除
「TrimPrefix」関数は、文字列の開始部分から特定のプレフィックス(接頭辞)を削除するときに使用します。プレフィックスが文字列の開始部分に存在しない場合、文字列はそのまま変更されません。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package main import ( "fmt" "strings" ) func main() { originalString := "GoHello, Gophers!" prefix := "Go" result := strings.TrimPrefix(originalString, prefix) fmt.Println(result) } |
出力結果
Hello, Gophers!
この例では、"Go"プレフィックスが削除され、「Hello, Gophers!」が出力されます。
TrimRight: 文字列の右端から指定した文字を削除
「TrimRight」は、文字列の右端から指定したセットの文字を削除する関数です。TrimLeftと同様に、第一引数に対象の文字列、第二引数に削除したい文字セットを指定します。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package main import ( "fmt" "strings" ) func main() { originalString := "!!Hello, Gophers!!!" charsToRemove := "!" result := strings.TrimRight(originalString, charsToRemove) fmt.Println(result) } |
出力結果
!!Hello, Gophers
このコードでは、「!」が右端から削除され、「!!Hello, Gophers」が出力されます。
TrimRightFunc: 右端からカスタム条件で文字を削除
「TrimRightFunc」関数を使用すると、カスタム関数を定義して、その関数に一致する文字を文字列の右端から削除することができます。これはTrimLeftFuncの右端版と考えることができます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package main import ( "fmt" "strings" ) func main() { originalString := "123Hello, Gophers!123" trimFunc := func(c rune) bool { return strings.ContainsRune("123", c) } result := strings.TrimRightFunc(originalString, trimFunc) fmt.Println(result) } |
出力結果
123Hello, Gophers!
この例では、"123"の各文字が右端から削除され、「123Hello, Gophers!」が出力されます。
TrimSuffix: 文字列の末尾からサフィックスを削除
「TrimSuffix」関数は、文字列の末尾から特定のサフィックス(接尾辞)を削除するときに使用します。サフィックスが文字列の末尾に存在しない場合、文字列はそのまま変更されません。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
package main import ( "fmt" "strings" ) func main() { originalString := "Hello, Gophers!Go" suffix := "Go" result := strings.TrimSuffix(originalString, suffix) fmt.Println(result) } |
出力結果
Hello, Gophers!
この例では、"Go"サフィックスが削除され、「Hello, Gophers!」が出力されます。
TrimLeftSpace: 文字列の左端から空白を削除
「TrimLeftSpace」は、文字列の左端から空白を削除する関数です。これにはスペース、タブ、その他のUnicode空白文字が含まれます。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package main import ( "fmt" "strings" ) func main() { originalString := " Hello, Gophers! " result := strings.TrimLeftSpace(originalString) fmt.Println(result) } |
出力結果
Hello, Gophers!
この例では、左端のスペースが削除され、「Hello, Gophers! 」(右端のスペースは残っています)が出力されます。
TrimRightSpace: 文字列の右端から空白を削除
「TrimRightSpace」は、文字列の右端から空白を削除する関数です。TrimLeftSpaceと同様、スペース、タブ、その他のUnicode空白文字が対象となります。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package main import ( "fmt" "strings" ) func main() { originalString := " Hello, Gophers! " result := strings.TrimRightSpace(originalString) fmt.Println(result) } |
出力結果
Hello, Gophers!
このコードでは、右端のスペースが削除され、「 Hello, Gophers!」(左端のスペースは残っています)が出力されます。
まとめ
Go言語のstringsパッケージには、文字列から不要な文字、空白、プレフィックス、サフィックスを取り除くための多数のTrim関数が含まれています。これらの関数は、テキストの処理やデータの整形において非常に重要な役割を果たします。
- Trim: 文字列の両端から指定された文字セットを削除します。
- TrimSpace: 文字列の両端から空白を削除します。これにはスペース、タブ、その他のUnicode空白文字が含まれます。
- TrimFunc: カスタム関数を用いて、その関数に一致する文字を文字列の両端から削除します。
- TrimLeft: 文字列の左端から指定した文字セットを削除します。
- TrimLeftFunc: カスタム関数を用いて、その関数に一致する文字を文字列の左端から削除します。
- TrimPrefix: 文字列の先頭から特定のプレフィックスを削除します。
- TrimRight: 文字列の右端から指定した文字セットを削除します。
- TrimRightFunc: カスタム関数を用いて、その関数に一致する文字を文字列の右端から削除します。
- TrimSuffix: 文字列の末尾から特定のサフィックスを削除します。
- TrimLeftSpace: 文字列の左端から空白を削除します。
- TrimRightSpace: 文字列の右端から空白を削除します。
これらの関数は、不要な文字や空白が取り除かれ、期待される形式に整形されたクリーンなデータを得ることができます。ユーザーからの入力をサニタイズしたり、データベースから取得した値を整形したりする際に、これらの関数が非常に役立ちます。Goにおけるこれらの便利なTrim関数の理解と使用は、効率的かつ安全なコードの記述に寄与します。
次のメソッドはコチラ
-
【Golang】Repeat、Replace、ReplaceAll、NewReplacer関数の使い方
Go言語マスターへの道!stringsパッケージの繰り返しと置換を行う関数 プログラミング言語Goにおけるstringsパッケージは、文字列操作のための強力なツールを提供します。 この記事では、文字列 ...
続きを見る