Heim >Backend-Entwicklung >Golang >Wie analysiere ich durch Leerzeichen getrennte Zeichenfolgen mit fmt.Scanln in Go?

Wie analysiere ich durch Leerzeichen getrennte Zeichenfolgen mit fmt.Scanln in Go?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 01:58:01558Durchsuche

How to Parse Space-Separated Strings with fmt.Scanln in Go?

So analysieren Sie durch Leerzeichen getrennte Zeichenfolgen mit fmt.scanln

fmt.scanln ist eine Funktion, die zum Lesen von Eingaben aus der Standardeingabe und zum Scannen verwendet wird es in strukturierte Variablen. Beim Lesen von durch Leerzeichen getrennten Zeichenfolgen kann es jedoch zu unerwartetem Verhalten kommen.

Standardmäßig stoppt fmt.scanln den Scanvorgang beim ersten Zeilenumbruchzeichen. Dies kann zu Situationen führen, in denen der Benutzer eine Zeichenfolge mit mehreren durch Leerzeichen getrennten Wörtern eingibt, aber nur das erste Wort erfasst wird.

Bedenken Sie beispielsweise den folgenden Code:

<code class="go">package main

import "fmt"

func main() {
    var s string
    fmt.Scanln(&s)
    fmt.Println(s)
    return
}</code>

Wann Wenn der Benutzer „31 des Monats“ eingibt, wird nur „31“ in der s-Variablen erfasst. Dies liegt daran, dass fmt.scanln den Scanvorgang stoppt, nachdem es auf das Leerzeichen stößt, bei dem es sich um ein Leerzeichen handelt.

Um dieses Problem zu beheben und mehrere durch Leerzeichen getrennte Wörter zu erfassen, können Sie einen der folgenden Schritte ausführen:

  1. Verwenden Sie mehrere fmt.Scanln-Anweisungen:

    • Bei dieser Methode wird fmt.Scanln mehrmals aufgerufen, um jedes Wort einzeln zu erfassen.
    <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>
  2. Verwenden Sie einen gepufferten Scanner:

    • Diese Alternative verwendet einen gepufferten Scanner, um die gesamte Eingabezeile zu lesen und sie dann zu analysieren durch Leerzeichen getrennte Wörter.
    <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>

Das obige ist der detaillierte Inhalt vonWie analysiere ich durch Leerzeichen getrennte Zeichenfolgen mit fmt.Scanln in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn