2012-10-01 78 views
9

我试图把它用strings.Replace(s,"\n","<br>",-1); 但结果是不同的东西可能在Web浏览器中显示为<br>,但其实不是"<br>"做。谁能告诉我如何做到这一点?golang:如何替换为“ n”“<br>”

我的主要目标是将行尾字符从<textarea>更改为html中的<br>标记。

任何线索都可以,欢迎提前致谢。

PS:

问:你是否试图从数据库中获得它?

答:是的,我从GAE的数据库中得到字符串,然后用<br>代替\n。数据库中的字符串有什么不同?

+4

我做了你写的东西('strings.Replace(s,“\ n”,“
”,-1)'),并且我用'
'代替了'“\ n”'。你为什么说你没有得到“
”?你以后用那个字符串做什么? –

+0

你想获取表单数据库吗? – NewUser

+2

我认为他可能会被模板包裹逃脱 – RoboTamer

回答

13

代码中的其他地方存在一个问题 - 输入模板时输出可能会被转义?您发布将取代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的模板位。

就走游乐场 - http://play.golang.org/p/KMzxku4UtL

2

https://stackoverflow.com/users/296559/robotamer是正确的。问题解决了。

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

感谢大家的帮助。

+0

当它解决您的问题时,接受您自己的答案(或任何答案)将是一件好事。详情请参阅[这里](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。 – nemo

+1

这是一个糟糕的主意 - 您现在已经开放了HTML注入漏洞(请参阅https://www.owasp.org/index.php/HTML_Injection)。你最好在你的模板中编写一个循环来遍历每一行,然后放置一个
。 –