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)
我一直在尝试读取一个文件,然后将读取的 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)