„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum entfernt „reader.ReadString“ nicht das anfängliche Trennzeichen?

Warum entfernt „reader.ReadString“ nicht das anfängliche Trennzeichen?

Veröffentlicht am 21.12.2024
Durchsuche:771

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

reader.ReadString entfernt das anfängliche Trennzeichen nicht

In dem Bemühen, ein Programm zu erstellen, das Benutzer namens Alice oder Bob, einen Entwickler, begrüßt Es ist ein Problem aufgetreten, bei dem selbst legitime Namen eine unerwünschte Reaktion auslösten. Das Programm hat Alice und Bob fälschlicherweise den Zutritt verweigert.

Das Problem

Das Problem ergibt sich aus der Verwendung von reader.ReadString('\n') im Programm . Diese Funktion ruft Zeichen ab, bis ein Zeilenumbruchzeichen gefunden wird. Das Trennzeichen wird jedoch nicht automatisch aus der zurückgegebenen Zeichenfolge entfernt, was dazu führt, dass eine zusätzliche neue Zeile in die Eingabe des Benutzers eingefügt wird.

Lösung

So beheben Sie dieses Problem , gibt es zwei mögliche Ansätze:

1. Schneiden Sie den Zeilenumbruch ab

Verwenden Sie die Funktion strings.TrimSpace, um alle führenden oder nachgestellten Leerzeichen aus der Eingabezeichenfolge zu entfernen, bevor Sie diese auswerten. Dadurch wird effektiv das Zeilenumbruchzeichen entfernt, das das Problem verursacht hat.

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

2. Verwenden Sie ReadLine anstelle von ReadString

Alternativ kann die ReadLine-Funktion anstelle von ReadString verwendet werden. ReadLine ruft eine Textzeile ab, ohne das Zeilenumbruchzeichen in die zurückgegebene Zeichenfolge einzuschließen.

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

Erklärung

Der Grund für die Verwendung von string(text) mit ReadLine ist, dass ReadLine ein Byte-Slice zurückgibt, während aliceOrBob ein String-Argument erfordert.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3