Ich versuche, eine ganze Zeile von der Konsole zu lesen (einschließlich Leerzeichen) und sie dann zu verarbeiten. Mit bufio.ReadString wird das Zeilenumbruchzeichen zusammen mit der Eingabe gelesen, sodass ich den folgenden Code zum Trimmen des Zeilenumbruchzeichens gefunden habe:
input,_:=src.ReadString('\n')
inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string
Gibt es einen idiomatischeren Weg, dies zu tun? Gibt es bereits eine Bibliothek, die sich beim Extrahieren von Teilzeichenfolgen um das End-Null-Byte kümmert?
(Ja, ich weiß, dass es bereits eine Möglichkeit gibt, eine Zeile ohne das Zeilenumbruchzeichen in go readline -> string zu lesen, aber ich suche eher nach einer eleganten String-Manipulation.)
s = s[:len(s)-1]
wird reichen.Go-Zeichenfolgen sind nicht nullterminiert. Um das letzte Zeichen einer Zeichenfolge zu entfernen, können Sie einfach Folgendes tun:
quelle
Um eine Panik bei einer Eingabe mit der Länge Null zu vermeiden, schließen Sie die Kürzungsoperation in ein if ein
quelle
Dies ist die einfache Möglichkeit, Teilzeichenfolgen in Go auszuführen
quelle
WARNUNG: Die alleinige Bearbeitung von Zeichenfolgen funktioniert nur mit ASCII und zählt falsch, wenn die Eingabe ein nicht ASCII-UTF-8-codiertes Zeichen ist. Wahrscheinlich werden sogar Zeichen beschädigt, da Multibyte-Zeichen in der Mitte der Sequenz geschnitten werden.
Hier ist eine UTF-8-fähige Version:
quelle
Um Teilzeichenfolge zu erhalten
finde die Position von "sp"
String mit Array-Logik schneiden
https://play.golang.org/p/0Redd_qiZM
quelle
8 Jahre später bin ich auf dieses Juwel gestoßen, und dennoch glaube ich nicht, dass die ursprüngliche Frage von OP wirklich beantwortet wurde:
Während die
bufio.Reader
Art unterstützt eineReadLine()
Methode , die beide entfernt\r\n
und\n
es wird als eine Low-Level - Funktion zu verstehen , die zur Benutzung umständlich ist , weil wiederholte Kontrollen notwendig sind.IMO ist eine idiomatische Möglichkeit, Leerzeichen zu entfernen, die Verwendung der Strings- Bibliothek von Golang :
Sehen Sie dieses Beispiel in Aktion auf dem Golang-Spielplatz: https://play.golang.org/p/HrOWH0kl3Ww
quelle