ホームページ >バックエンド開発 >Golang >「reader.ReadString」が最初の区切り文字を削除しないのはなぜですか?

「reader.ReadString」が最初の区切り文字を削除しないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-24 05:31:14810ブラウズ

Why Doesn't `reader.ReadString` Remove the Initial Delimiter?

reader.ReadString Does Not Strip Out Initial Delimiter

開発者のアリスまたはボブという名前のユーザーに挨拶するプログラムを作成しようとしています正当な名前であっても、望ましくない応答がトリガーされるという問題が発生しました。プログラムは、Alice と Bob の両方への入場を誤って拒否しました。

問題

この問題は、プログラム内での Reader.ReadString('n') の使用に起因します。この関数は、改行文字が見つかるまで文字を取得します。ただし、返された文字列から区切り文字は自動的に削除されないため、ユーザーの入力に追加の改行が含まれることになります。

解決策

この問題を解決するには、考えられるアプローチは 2 つあります:

1.改行をトリミングします

strings.TrimSpace 関数を使用して、入力文字列を評価する前に先頭または末尾の空白を削除します。これにより、問題の原因となった改行文字が効果的に削除されます。

if aliceOrBob(strings.TrimSpace(text)) {
    fmt.Printf("Hello, ", text)
}

2. ReadString の代わりに ReadLine を使用する

または、ReadString の代わりに ReadLine 関数を使用することもできます。 ReadLine は、返される文字列に改行文字を含めずにテキスト行を取得します。

text, _, _ := reader.ReadLine()
if aliceOrBob(string(text)) {
    fmt.Printf("Hello, ", text)
}

説明

ReadLine で string(text) を使用する理由は次のとおりです。 ReadLine はバイト スライスを返しますが、aliceOrBob は文字列引数を必要とします。

以上が「reader.ReadString」が最初の区切り文字を削除しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。