ホームページ > バックエンド開発 > Golang > Fmt.Scanln を使用して文字列からスペースで区切られた文字列を読み取る方法

Fmt.Scanln を使用して文字列からスペースで区切られた文字列を読み取る方法

Susan Sarandon
リリース: 2024-11-04 00:04:03
オリジナル
450 人が閲覧しました

How to Read Space-Separated Strings from a String Using Fmt.Scanln?

Fmt.Scanln を使用して文字列からスペースで区切られた文字列を読み取る

fmt パッケージの一部である Scanln 関数により、次の読み取りが可能になります。文字列からの入力。ただし、Scanln を使用するときに発生する一般的な問題は、スペースで区切られた複数の単語が予期されるときに最初の単語のみを取得することです。

提供された例では:

<code class="go">package main

import "fmt"

func main() {
    var s string
    fmt.Scanln(&s)
    fmt.Println(s)
    return
}</code>
ログイン後にコピー

入力を使用してこのコードを実行すると、 「31 of month」の場合、予期される「31 of month」の代わりに「31」が出力されます。これは、Scanln がスペースを無視して入力を単一のトークンとして扱うためです。

この問題を解決するには、次の解決策を利用できます。

1.複数の変数を同時にスキャンする

fmt Scanln は複数の引数を受け入れ、複数の単語を同時に読み取ることができます。

<code class="go">package main

import "fmt"

func main() {
    var s1 string
    var s2 string
    fmt.Scanln(&s1, &s2)
    fmt.Println(s1)
    fmt.Println(s2)
    return
}</code>
ログイン後にコピー

このコードは、「31」と「月」を正しく出力します。

2. Bufio スキャナーを使用する

bufio パッケージは、文字列を含むさまざまなソースから入力を読み取るプロセスを簡素化します。

<code class="go">package main
import (
    "bufio"
    "fmt"
    "os"
)

func main() {
    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        s := scanner.Text()
        fmt.Println(s)
    }
    if err := scanner.Err(); err != nil {
        os.Exit(1)
    }
}</code>
ログイン後にコピー

このコードを使用すると、各行を読み取って出力できます。個別に。

以上がFmt.Scanln を使用して文字列からスペースで区切られた文字列を読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート