2012-10-01 113 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)。你最好在你的模板中編寫一個循環來遍歷每一行,然後放置一個
。 –