Golang:从文本文件中替换字符串中的换行符的问题

Golang: Issues replacing newlines in a string from a text file

我一直在尝试读取一个文件,然后将读取的 material 放入一个字符串中。然后字符串将按行拆分为多个字符串:

absPath, _ := filepath.Abs("../Go/input.txt")
data, err := ioutil.ReadFile(absPath)
if err != nil {
    panic(err)
}
input := string(data)

input.txt读作:

a

strong little bird

with a very

big heart

went

to school one day and

forgot his food at

home

然而,

re = regexp.MustCompile("\n")
input = re.ReplaceAllString(input, " ")

将文本变成一团糟:

homeot his food atand

我不确定替换换行符是如何造成如此严重到文本倒置的程度

我猜你是运行使用Windows的代码。请注意,如果您打印出结果字符串的长度,它将显示超过 100 个字符。原因是 Windows 不仅使用换行符 (\n),还使用回车符 returns (\r) - 所以 Windows 中的换行符实际上是 \r\n,而不是 \n。要从您的字符串中正确过滤掉它们,请使用:

re := regexp.MustCompile(`\r?\n`)
input = re.ReplaceAllString(input, " ")

反引号将确保您不需要在正则表达式中引用反斜杠。我使用了马车的问号 return 来确保您的代码也适用于其他平台。

我认为您不需要使用正则表达式来完成如此简单的任务。这可以通过

来实现
absPath, _ := filepath.Abs("../Go/input.txt")
data, _ := ioutil.ReadFile(absPath)
input := string(data)
strings.Replace(input, "\n","",-1)

example of removing \n