Heim > Backend-Entwicklung > Golang > Wie entferne ich effizient Akzente aus Go-Saiten?

Wie entferne ich effizient Akzente aus Go-Saiten?

Barbara Streisand
Freigeben: 2024-11-02 20:09:31
Original
941 Leute haben es durchsucht

How to Efficiently Remove Accents from Go Strings?

Go-Strings: Akzente eliminieren

In Go stellt das Entfernen von Akzenten aus Strings und deren Konvertierung in ihr nicht akzentuiertes Äquivalent eine besondere Herausforderung dar. Hier finden Sie eine Untersuchung des Problems und eine mögliche Lösung.

Ein Versuch, dieses Problem zu lösen, umfasst die Implementierung einer Funktion basierend auf dem Beispiel in einem Blog mit dem Titel „Performing Magic“. Das Beispiel beinhaltet die Verwendung der Pakete unicode/norm und text/transform.

<code class="go">package main

import (
    "bytes"
    "code.google.com/p/go.text/transform"
    "code.google.com/p/go.text/unicode/norm"
    "fmt"
    "unicode"
)

func isMn(r rune) bool {
    return unicode.Is(unicode.Mn, r) // Mn: nonspacing marks
}

func main() {
    r := bytes.NewBufferString("Your Śtring")
    t := transform.Chain(norm.NFD, transform.RemoveFunc(isMn), norm.NFC)
    r = transform.NewReader(r, t)
    fmt.Println(r)
}</code>
Nach dem Login kopieren

Diese Implementierung ist jedoch nicht ohne Einschränkungen. Neuere Versionen von Go (ab 1.5) führen Änderungen ein, die sich auf die Funktionalität auswirken können.

Go 1.5 und das Runes-Paket

Go 1.5 führte das Runes-Paket ein, das eine praktische Remove-Funktion enthält, die die Arbeit vereinfacht der Akzententfernungsprozess.

<code class="go">func Remove() transform.Transformer</code>
Nach dem Login kopieren

Die Remove-Funktion akzeptiert eine Reihe von Unicode-Kategoriecodes und entfernt alle Runen, die in diese Kategorien fallen, aus der transformierten Zeichenfolge. Um beispielsweise Zeichen ohne Leerzeichen (Mn) zu entfernen, können Sie Folgendes verwenden:

<code class="go">t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)</code>
Nach dem Login kopieren

Diese Transformationskette wandelt akzentuierte Zeichen in ihre nicht akzentuierten Äquivalente um, was sie zu einer effektiveren und prägnanteren Lösung für die Akzententfernung in macht Los.

Das obige ist der detaillierte Inhalt vonWie entferne ich effizient Akzente aus Go-Saiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage