Как сделать строки. Сплит на новую строку?

Я пытаюсь выполнить довольно простую задачу разделения строки на новые строки.

Это не работает:

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

Я также попробовал 'вместо `но не повезло.

Любые идеи?

Ответы

Ответ 1

Вы должны использовать "\n".

Разделяя '\n', выполняется поиск фактического \ за n в тексте, а не байта новой строки.

playground

Ответ 2

Это не работает, потому что вы используете обратные ссылки:

Строковые литералы строки представляют собой последовательности символов между обратными кавычками ``. В кавычках любой символ является законным, за исключением обратной цитаты. Значением строкового литерала является строка, состоящая из неинтерпретированных (неявно UTF-8-кодированных) символов между кавычками; , в частности, обратные косые черты не имеют особого значения, а строка может содержать символы новой строки.

Ссылка: http://golang.org/ref/spec#String_literals

Итак, когда вы делаете

strings.Split(result,`\n`)

вы фактически раскалываете, используя два последовательных символа "\" и "n", а не символ строки "\n". Чтобы сделать то, что вы хотите, просто используйте "\n" вместо обратных ссылок.

Ответ 3

Для тех из нас, кто иногда использует платформу Windows, может помочь не забыть использовать замену перед разделением:

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

Go Playground

Ответ 4

' не работает, потому что это не строковый тип, а руна.

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

компилятор go: cannot use '\u000a' (type rune) as type string in argument to strings.Split

определение: Split(s, sep string) []string