Goで文字列がサブストリングで始まるかどうかを判断する方法
Grace Collins
Solutions Engineer · Leapcell

Key Takeaways
strings.HasPrefix
を使用して、文字列が特定のサブストリングで始まるかどうかを効率的に確認します。- 代替メソッドは、文字列を手動でスライスして比較することです。
strings.HasPrefix
は、可読性と信頼性のために推奨されるアプローチです。
Goでは、文字列が特定のサブストリングで始まるかどうかを判断するために、strings
パッケージを効率的に使用できます。このパッケージは、文字列操作のためのさまざまな機能を提供します。この記事では、文字列のプレフィックスを確認するための主要な方法と、スライスを使用した代替アプローチについて説明します。
strings.HasPrefix
関数の使用
strings
パッケージには、文字列が指定されたプレフィックスで始まるかどうかを確認するために特別に設計されたHasPrefix
関数が用意されています。この関数はブール値を返します。文字列が指定されたプレフィックスで始まる場合はtrue
、そうでない場合はfalse
です。
構文:
func HasPrefix(s, prefix string) bool
パラメータ:
s
: チェックする文字列。prefix
:s
の先頭で検索するサブストリング。
例:
package main import ( "fmt" "strings" ) func main() { str := "Hello, Gophers!" prefix := "Hello" if strings.HasPrefix(str, prefix) { fmt.Printf("文字列\"%s\"はプレフィックス\"%s\"で始まります。\n", str, prefix) } else { fmt.Printf("文字列\"%s\"はプレフィックス\"%s\"で始まりません。\n", str, prefix) } }
出力:
文字列"Hello, Gophers!"はプレフィックス"Hello"で始まります。
この例では、strings.HasPrefix
は、変数str
がサブストリングprefix
で始まるかどうかを確認します。そうであるため、プログラムは確認メッセージを出力します。
代替アプローチ: 文字列スライスの使用
文字列が特定のサブストリングで始まるかどうかを判断する別の方法は、文字列のスライスと比較を使用することです。このアプローチでは、プレフィックスの長さに一致する文字列の一部を抽出し、それを目的のプレフィックスと比較します。
例:
package main import ( "fmt" ) func main() { str := "Hello, Gophers!" prefix := "Hello" if len(str) >= len(prefix) && str[:len(prefix)] == prefix { fmt.Printf("文字列\"%s\"はプレフィックス\"%s\"で始まります。\n", str, prefix) } else { fmt.Printf("文字列\"%s\"はプレフィックス\"%s\"で始まりません。\n", str, prefix) } }
出力:
文字列"Hello, Gophers!"はプレフィックス"Hello"で始まります。
このコードでは、最初にstr
の長さがprefix
以上であることを確認し、文字列の境界を超えたスライスを避けます。次に、str
の先頭セグメント(prefix
の長さまで)をprefix
と比較します。それらが等しい場合、str
がprefix
で始まることを確認します。
結論
Goで文字列が特定のサブストリングで始まるかどうかを確認するには、最も簡単で慣用的な方法は、標準ライブラリのstrings.HasPrefix
関数を使用することです。この関数はそのような操作に最適化されており、コードの可読性を高めます。または、文字列スライスをこの目的に使用できますが、潜在的なランタイムエラーを防ぐため追加のチェックが必要です。
FAQs
最適化され、標準ライブラリに組み込まれているstrings.HasPrefix
を使用します。
はい、ただし、ランタイムエラーを回避するために、文字列の長さが十分であることを確認する必要があります。
はい、大文字と小文字を区別する比較を実行します。
Leapcellは、Goプロジェクトをホストするための最適の選択肢です。
Leapcellは、Webホスティング、非同期タスク、およびRedisのための次世代サーバーレスプラットフォームです:
多言語サポート
- Node.js、Python、Go、またはRustで開発できます。
無制限のプロジェクトを無料でデプロイ
- 使用量に応じてのみ支払い - リクエストも料金もかかりません。
比類のないコスト効率
- アイドル料金なしの従量課金制。
- 例: $25で平均応答時間60msで694万リクエストをサポートします。
合理化された開発者エクスペリエンス
- 簡単なセットアップのための直感的なUI。
- 完全に自動化されたCI/CDパイプラインとGitOpsの統合。
- 実用的な洞察のためのリアルタイムメトリックとロギング。
容易なスケーラビリティと高性能
- 高い同時実行性を容易に処理するための自動スケーリング。
- 運用オーバーヘッドゼロ - 構築に集中するだけです。
ドキュメントで詳細をご覧ください!
Xでフォローしてください: @LeapcellHQ