2016-08-06 13 views
1

Ich habe einige Inhalte in MySQL gespeichert, die so aussehen.Wie drucke ich neue Zeilen in der Golang-Vorlage?

"Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.google.com" 

Wenn ich es in Golang-Vorlage drucke, wird es nicht korrekt analysiert. Ich meine alles in einer Zeile angezeigt.

soll Es ist wie dieser hier

Hi! 
How are you? 
Here is the link you wanted: 
http://www.google.com 

drucken ist mein Template-Code.

Fehle ich etwas?

Antwort

1

Um dies im Browser zu drucken, ersetzen Sie \n durch z. <br>
wie body = strings.Replace(body, "\n", "<br>", -1)
dieses Arbeitsbeispielcode siehe:

package main 

import (
    "bytes" 
    "fmt" 
    "html/template" 
    "log" 
    "net/http" 
    "strings" 
) 

func main() { 
    http.HandleFunc("/", ServeHTTP) 
    if err := http.ListenAndServe(":80", nil); err != nil { 
     log.Fatal(err) 
    } 
} 

func ServeHTTP(w http.ResponseWriter, r *http.Request) { 
    html := ` 
<!DOCTYPE html> 
<html> 
<body> 
<table style="width:100%"> 
    <tr> 
    <th>Data</th> 
    <th>Content</th> 
    </tr> 
    <tr> 
    <td>{{.Data}}</td> 
    <td>{{.Content}}</td> 
    </tr> 
</table> 
</body> 
</html> 
` 
    st := "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.google.com" 
    data := DataContent{"data", st} 

    buf := &bytes.Buffer{} 
    t := template.Must(template.New("template1").Parse(html)) 
    if err := t.Execute(buf, data); err != nil { 
     panic(err) 
    } 
    body := buf.String() 
    body = strings.Replace(body, "\n", "<br>", -1) 
    fmt.Fprint(w, body) 
} 

type DataContent struct { 
    Data, Content string 
} 

Um die Ausgabe zu sehen, die diesen Code ausführen und öffnen Sie Ihren Browser auf http://127.0.0.1/

Siehe auch: html/templates - Replacing newlines with <br>

Ich hoffe, das hilft .

2

Hier können Sie die Funktion Split verwenden, um die Zeichenfolge zu analysieren und die Teilzeichenfolge in Segmente unter Verwendung der sep als Trennzeichen aufzuteilen.

package main 

import (
    "fmt" 
    "strings" 
) 

func main() { 
    txt := "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.google.com" 
    res := strings.Split(txt, "\n") 
    for _, val := range res { 
     fmt.Println(val) 
    } 
} 

wird der Ausgang sein:

Hi! 
How are you? 
Here is the link you wanted: 
http://www.google.com 

Beispiel auf Go Playground.

+0

Danke Simo, aber ich möchte dies im Browser drucken. Gibt es schon Template-Helfer in go? – user1091558