Go 如何在换行符上拆分字符串?

Go 如何在换行符上拆分字符串?,go,Go,我正在尝试做一个相当简单的任务,用换行符拆分字符串 这不起作用: temp := strings.Split(result,`\n`) 我也试过“代替”,但运气不好 有什么想法吗?你必须使用“\n” 在`\n`上拆分,在文本中搜索实际的\,后跟n,而不是换行字节 它不起作用,因为您正在使用反勾号: 原始字符串文字是反引号``之间的字符序列。在引号中,除反引号外,任何字符都是合法的。原始字符串文本的值是由引号之间的未解释(隐式UTF-8编码)字符组成的字符串特别是,反斜杠没有特殊含义,字符串可能

我正在尝试做一个相当简单的任务,用换行符拆分字符串

这不起作用:

temp := strings.Split(result,`\n`)
我也试过“代替”,但运气不好

有什么想法吗?

你必须使用
“\n”

`\n`
上拆分,在文本中搜索实际的
\
,后跟
n
,而不是换行字节


它不起作用,因为您正在使用反勾号:

原始字符串文字是反引号``之间的字符序列。在引号中,除反引号外,任何字符都是合法的。原始字符串文本的值是由引号之间的未解释(隐式UTF-8编码)字符组成的字符串特别是,反斜杠没有特殊含义,字符串可能包含换行符

参考:

所以,当你在做

strings.Split(result,`\n`)

实际上,您使用的是两个连续字符“\”和“n”,而不是换行符“\n”。要做您想做的事情,只需使用
“\n”
而不是反勾号。

对于我们这些有时使用Windows平台的人,它可以 帮助记住在拆分前使用“替换”:

strings.Split(strings.ReplaceAll(windows, "\r\n", "\n"), "\n")
'不起作用,因为它不是字符串类型,而是符文

temp:=strings.Split(结果“\n”)
go编译器:
无法在字符串的参数中使用'\u000a'(类型符文)作为类型字符串。拆分


定义:
Split(s,sep string)[]string

您的代码不起作用,因为您使用的是反勾号而不是双引号。但是,如果要支持Windows,则应使用
bufio.Scanner

import (
    "bufio"
    "strings"
)

func SplitLines(s string) []string {
    var lines []string
    sc := bufio.NewScanner(strings.NewReader(s))
    for sc.Scan() {
        lines = append(lines, sc.Text())
    }
    return lines
}

这应该与“\n”一起使用。您尝试strings.Split(结果“\n”)的结果是什么?是的,我显然把测试搞砸了。现在觉得自己很愚蠢我会投票现在就结束,因为“这个问题是打字错误造成的,无法复制”,但我认为其他人可能也有同样的问题。我们把它作为一个标志牌吧?这不是一个真正的打字错误,这是一个有效的问题,人们很容易就会错误地使用这种反勾号。这个问题刚才帮助了我;-)为什么不仅仅是
strings.Split(windows,“\r\n”)
?@ymonad这是一个好问题,但是如果您使用我的方法,代码将在windows和Linux上正确工作以分割文件,如果您不必担心跨平台,那么就没有什么好处了。@Cameron为什么不使用
ReplaceAll
而不是
Replace
?@rodrigocfd另一个好问题!ReplaceAll于2019年2月25日作为Go 1.12的一部分发布,但我于2019年1月13日回复了。所以当我回答时它不可用。我会修好的