我正在尝试用换行符分割字符串这个相当简单的任务。
这不起作用:
temp := strings.Split(result,`\n`)
我也试过'而不是'但没有运气。
有什么想法吗?
答案 0 :(得分:47)
答案 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")
答案 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