J'ai essayé d'avoir un fichier à lire, qui mettra ensuite le matériel lu dans une chaîne. Ensuite, la chaîne sera divisée par ligne en plusieurs chaînes:
absPath, _ := filepath.Abs("../Go/input.txt")
data, err := ioutil.ReadFile(absPath)
if err != nil {
panic(err)
}
input := string(data)
Le fichier input.txt se lit comme suit:
une
petit oiseau fort
avec un très
grand coeur
est allé
à l'école un jour et
oublié sa nourriture à
accueil
Cependant,
re = regexp.MustCompile("\\n")
input = re.ReplaceAllString(input, " ")
transforme le texte en un gâchis mutilé de:
homeot sa nourriture atand
Je ne sais pas comment le remplacement des sauts de ligne peut gâcher si mal au point où le texte s'inverse
Je suppose que vous exécutez le code sous Windows. Notez que si vous imprimez la longueur de la chaîne résultante, elle affichera quelque chose de plus de 100 caractères. La raison en est que Windows utilise non seulement des retours à la ligne (\n
) mais aussi les retours chariot (\r
) - donc une nouvelle ligne dans Windows est en fait \r\n
, ne pas \n
. Pour les filtrer correctement hors de votre chaîne, utilisez:
re = regexp.MustCompile(`\r?\n`)
input = re.ReplaceAllString(input, " ")
Les backticks vous assureront que vous n'avez pas besoin de citer les barres obliques inverses dans l'expression régulière. J'ai utilisé le point d'interrogation pour le retour chariot pour m'assurer que votre code fonctionne également sur d'autres plates-formes.
Je ne pense pas que vous ayez besoin d'utiliser l'expression régulière pour une tâche aussi simple. Cela peut être réalisé avec juste
absPath, _ := filepath.Abs("../Go/input.txt")
data, _ := ioutil.ReadFile(absPath)
input := string(data)
strings.Replace(input, "\n","",-1)