Go-Sprachübung: Wie entferne ich HTML-Tags?
In der Webentwicklung müssen wir häufig HTML-Tags entfernen, um Nur-Text-Inhalte zu erhalten, z. B. zur Analyse und Verarbeitung von Kommentaren, Artikeln usw. Für diese Anforderung bietet die Go-Sprache eine Vielzahl von Methoden. In diesem Artikel werden Ihnen einige davon vorgestellt.
Methode 1: String-Ersetzung verwenden
Die Go-Sprache stellt das Strings-Paket zum Betreiben von Strings bereit. Wir können die Methode strings.ReplaceAll() verwenden, um HTML-Tags durch Leerzeichen zu ersetzen, um einfachen Textinhalt zu erhalten. Der spezifische Implementierungscode lautet wie folgt:
package main import ( "fmt" "strings" ) func main() { html := "<html><head><title>Test Page</title></head><body><p>Hello, Go!</p></body></html>" // 使用 strings.ReplaceAll() 将 HTML 标签替换为空白字符 text := strings.ReplaceAll(html, "<", " <") text = strings.ReplaceAll(text, ">", "> ") text = strings.TrimSpace(strings.Join(strings.Fields(text), " ")) fmt.Println(text) }
Im obigen Code verwenden wir zunächst die Methode strings.ReplaceAll(), um alle linken spitzen Klammern („<“) durch Leerzeichen + linke spitze Klammern zu ersetzen und alle rechten Winkel zu ersetzen Klammern („>“) werden durch die Form einer rechten spitzen Klammer + Leerzeichen ersetzt, d. h. zwischen der Beschriftung und dem Text wird ein Leerzeichen eingefügt, um die spätere Verwendung der strings.Fields()-Methode zum Aufteilen der Zeichenfolge in mehrere zu erleichtern Teilzeichenfolgen. Als nächstes verwenden wir die Methode strings.Fields(), um die Zeichenfolge in mehrere Teilzeichenfolgen aufzuteilen, verwenden dann strings.Join(), um diese Teilzeichenfolgen mit Leerzeichen zu verbinden, und verwenden schließlich die Methode strings.TrimSpace(), um die Zeichenfolgen an beiden zu entfernen endet mit Leerzeichen, um den endgültigen Klartextinhalt zu erhalten.
Führen Sie den obigen Code aus und die Ausgabe sieht wie folgt aus:
Test Page Hello, Go!
Der obige Code ist einfach zu implementieren, es gibt jedoch mehrere Probleme:
In Anbetracht dieser Probleme können wir die zweite Methode verwenden.
Methode 2: Verwenden Sie die Goquery-Bibliothek
Goquery ist eine HTML-Parsing- und Manipulationsbibliothek in der Go-Sprache, die eine praktische und flexible API bietet. Wir können die Goquery-Bibliothek verwenden, um HTML zu analysieren und Textknoten zu filtern, um Nur-Text-Inhalte zu erhalten. Der spezifische Implementierungscode lautet wie folgt:
package main import ( "fmt" "strings" "github.com/PuerkitoBio/goquery" ) func main() { html := "<html><head><title>Test Page</title></head><body><p>Hello, Go!</p></body></html>" doc, _ := goquery.NewDocumentFromReader(strings.NewReader(html)) // 筛选文本节点 var text string doc.Find(":not(script):not(style)").Each(func(_ int, sel *goquery.Selection) { if sel.Children().Length() == 0 { text += sel.Text() + " " } }) fmt.Println(strings.TrimSpace(text)) }
Im obigen Code verwenden wir die Methode goquery.NewDocumentFromReader(), um HTML in ein goquery.Document-Objekt zu konvertieren. Als nächstes verwenden wir die Methode doc.Find(), um alle Knoten außer Skript- und Stil-Tags auszuwählen, und verwenden die Methode sel.Children().Length(), um zu bestimmen, ob der aktuelle Knoten ein Textknoten ist. Wenn ja, fügen wir ihn hinzu Inhalt in die Textvariable ein. Verwenden Sie abschließend die Methode strings.TrimSpace(), um die Leerzeichen an beiden Enden der Zeichenfolge zu entfernen und den endgültigen Klartextinhalt zu erhalten.
Führen Sie den obigen Code aus. Die Ausgabe lautet wie folgt:
Test Page Hello, Go!
Mit der Goquery-Bibliothek können verschiedene Tag-Formate verarbeitet werden, und der Code ist einfacher zu lesen und zu warten.
In diesem Artikel werden zwei Methoden zum Entfernen von HTML-Tags vorgestellt, unter denen auch häufig reguläre Ausdrücke verwendet werden. In praktischen Anwendungen können wir für bestimmte Situationen die am besten geeignete Methode auswählen.
Das obige ist der detaillierte Inhalt vonSo entfernen Sie HTML in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!