J'essaie de lire une ligne entière à partir de la console (y compris les espaces), puis de la traiter. En utilisant bufio.ReadString, le caractère de nouvelle ligne est lu avec l'entrée, j'ai donc proposé le code suivant pour couper le caractère de nouvelle ligne:
input,_:=src.ReadString('\n')
inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string
Y a-t-il une manière plus idiomatique de faire cela? Autrement dit, existe-t-il déjà une bibliothèque qui prend en charge l'octet nul de fin lors de l'extraction de sous-chaînes pour vous?
(Oui, je sais qu'il existe déjà un moyen de lire une ligne sans le caractère de nouvelle ligne dans go readline -> string mais je recherche davantage une manipulation de chaîne élégante.)
s = s[:len(s)-1]
fera l'affaire.Les chaînes Go ne sont pas terminées par null, et pour supprimer le dernier caractère d'une chaîne, vous pouvez simplement faire:
la source
Pour éviter une panique sur une entrée de longueur nulle, encapsulez l'opération de troncature dans un if
la source
C'est le plus simple pour effectuer une sous-chaîne dans Go
la source
AVERTISSEMENT: n'opérer que sur des chaînes ne fonctionnera qu'avec ASCII et comptera mal lorsque l'entrée est un caractère non encodé en ASCII UTF-8, et corrompra probablement même les caractères car il coupe les caractères multi-octets au milieu de la séquence.
Voici une version compatible UTF-8:
la source
Pour obtenir une sous-chaîne
trouver la position de "sp"
couper la chaîne avec logique de tableau
https://play.golang.org/p/0Redd_qiZM
la source
8 ans plus tard, je suis tombé sur ce joyau, et pourtant je ne pense pas que la question initiale d'OP ait vraiment été répondue:
Alors que le
bufio.Reader
type prend en charge uneReadLine()
méthode qui supprime à la fois\r\n
et\n
qu'il est conçu comme une fonction de bas niveau qui est difficile à utiliser car des vérifications répétées sont nécessaires.IMO, un moyen idiomatique de supprimer les espaces est d'utiliser la bibliothèque de chaînes de Golang :
Voir cet exemple en action dans le terrain de jeu de Golang: https://play.golang.org/p/HrOWH0kl3Ww
la source