将行尾转换为“ \ n”文字

时间:2019-05-25 13:21:32

标签: string go eol

我有一个有趣的问题要解决。由于要使用的工具,我需要将换行符转换为文字字符串\n,我有以下数据

{"name": 2019-05-25,
"tracker": {
"project": {
  "uri": "/project/87",
  "name": "Allen's Test"
},
"uri": "/tracker/57483",
"name": "Tasks"
        },
"description": "[{Table

||Stack
||Current Version
||New Version
||Changes
|common
|1.0.214
|1.0.214
|* blah - [#345|https://blah.com/345]

|workflow
|2.2.23
|2.2.23
|* [ES-12345] blah - [#1087|https://blah.com/1087]

}]",
"descFormat": "Wiki"}

所以基本上不是多行字符串,我需要使用\ n将其转换为单行字符串,后端的工具将对其进行转换。我正在使用go,但不太确定从哪里开始。我假设我需要原始字符串,但是许多源位是内置了换行符的api调用。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我觉得这是一个XY问题...

但是要简单地将换行符'\ n'替换为2个字符的字符串\n,请使用:

strings.ReplaceAll(data, "\n", "\\n")

游乐场:https://play.golang.org/p/Xmg4pgqFy5O

输出:

{"name": 2019-05-25,\n"tracker": {\n"project": {\n  "uri": "/project/87",\n ....

注意:这不会处理其他格式字符,例如制表符({\t)回车符(\r)等。

答案 1 :(得分:1)

例如,

package main

import (
    "fmt"
    "strings"
)

func main() {
    s := `"project": {
  "uri": "/project/87",
  "name": "Allen's Test"
},`
    fmt.Println(s)
    s = strings.ReplaceAll(s, "\n", `\n`)
    fmt.Println(s)
}

游乐场:https://play.golang.org/p/lKZw78yOuMc

输出:

"project": {
  "uri": "/project/87",
  "name": "Allen's Test"
},
"project": {\n  "uri": "/project/87",\n  "name": "Allen's Test"\n},

对于Go 1.12之前的版本,请输入:

s = strings.Replace(s, "\n", `\n`, -1)