【问题标题】:golang: how to replace "\n" with "<br>"golang:如何用“<br>”替换“\n”
【发布时间】:2012-09-22 05:02:24
【问题描述】:

我尝试使用strings.Replace(s,"\n","&lt;br&gt;",-1); 来做到这一点 但结果有所不同,它可以在网络浏览器中显示为&lt;br&gt;,但实际上不是"&lt;br&gt;"。谁能告诉我该怎么做?

我的主要目标是将行尾字符从 &lt;textarea&gt; 更改为 html 中的 &lt;br&gt; 标记。

欢迎提供任何线索,在此先感谢。

PS:

问:你想从数据库中获取它吗?

A:是的,我从 GAE 的数据库中获取字符串,然后将 \n 替换为 &lt;br&gt;。数据库中的字符串有什么不同吗?

【问题讨论】:

  • 我做了你写的 (strings.Replace(s,"\n","&lt;br&gt;",-1)),我得到了一个 &lt;br&gt; 代替了 "\n"。你为什么说你没有得到 "
    " ?你以后用那个字符串做什么?
  • 您是否尝试从数据库中获取?
  • 我认为他可能被模板包逃脱了

标签: html replace go


【解决方案1】:

您的代码中的其他地方存在问题 - 将输出放入模板时可能会被转义?您发布的行将用 br 替换换行符并且是正确的 - 请参阅这个简单的测试:

package main
import("strings")

func main() {
    s := "I am a string\nContaining new lines"
    s = strings.Replace(s,"\n","<br>",-1)
    println(s)
}

您需要发布比这更多的代码,以便人们找到您出错的地方,例如发布创建/操作字符串的函数,以及将其输出到 html 的模板位。

On Go 游乐场 - http://play.golang.org/p/KMzxku4UtL

【讨论】:

  • 在此示例中,"\n" 是文字字符串,并在编译时进行解释。与 s 变量分配的字符串相同。如果从文件中读入提问者的字符串,则“\”和“n”将是单独的文字字符,替换将不起作用。
【解决方案2】:

https://stackoverflow.com/users/296559/robotamer 说对了。问题解决了。

问题出在模板文件中。我使用 |html 来转义内容。当我在代码中删除“|html”时,一切都很好。

感谢大家的帮助。

【讨论】:

  • 当它解决您的问题时,最好接受您自己的答案(或任何答案)。详情请见here
  • 这是个坏主意——您现在对 HTML 注入漏洞持开放态度(请参阅 owasp.org/index.php/HTML_Injection)。您最好在模板中编写一个循环来遍历每一行,并在其间放置一个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-30
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
相关资源
最近更新 更多