如何字符串。拼接换行?

时间:2014-08-01 12:59:39

标签: go

我正在尝试用换行符分割字符串这个相当简单的任务。

这不起作用:

temp := strings.Split(result,`\n`)

我也试过'而不是'但没有运气。

有什么想法吗?

5 个答案:

答案 0 :(得分:47)

您必须使用"\n"

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

playground

答案 1 :(得分:15)

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

  

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

参考:http://golang.org/ref/spec#String_literals

所以,当你做

strings.Split(result,`\n`)

你实际上是使用两个连续的角色进行分裂" \"和" n",而不是行返回的字符" \ n"。要做你想做的事,只需使用"\n"而不是反引号。

答案 2 :(得分:2)

对于那些有时使用Windows平台的人来说,它可以 帮助记住切分之前要使用替换:

strings.Split(strings.Replace(windows, "\r\n", "\n", -1), "\n")

Go Playground

答案 3 :(得分:2)

您的代码不起作用,因为您使用的是反引号而不是双引号。但是,如果要支持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
}

答案 4 :(得分:0)

'不起作用,因为它不是字符串类型,而是符文。

temp := strings.Split(result,'\n')

转到编译器:cannot use '\u000a' (type rune) as type string in argument to strings.Split

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