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

时间:2015-12-05 23:58:47

标签: string file input go newline

我一直试图读取一个文件,然后将读取的材料放入一个字符串中。然后字符串将逐行分成多个字符串:

su

input.txt读作:

  

     

强壮的小鸟

     

非常

     

大心脏

     

     

到学校一天

     

忘了他的食物

     

然而,

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

将文字变成乱七八糟的混乱:

  

将食物归于

我不确定如何更换新行会如此糟糕到文本反转的程度

2 个答案:

答案 0 :(得分:23)

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

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

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

答案 1 :(得分:2)

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

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

example of removing \n