Heim >Backend-Entwicklung >Golang >Wie erreicht man in Go mit sort.Strings() eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung?

Wie erreicht man in Go mit sort.Strings() eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-02 10:34:02208Durchsuche

How to Achieve Case-Insensitive Sorting in Go with sort.Strings()?

Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung in Golang mit sort.Strings()

In Python wird die Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung häufig mithilfe des Schlüsselparameters von erreicht die Funktion sorted(), die benutzerdefinierte Vergleichsfunktionen ermöglicht. In sort.Strings() von Go gibt es jedoch kein direktes Äquivalent.

Um in Go eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen, können wir die leistungsstarken Slicing-Funktionen von Go nutzen. Ein Ansatz besteht darin, eine benutzerdefinierte Vergleichsfunktion zu erstellen, die die Kleinbuchstabenversionen der Zeichenfolgen vergleicht:

<code class="go">sort.Strings(data, func(i, j int) bool {
    return strings.ToLower(data[i]) < strings.ToLower(data[j])
})</code>

Diese Methode eignet sich gut für kleine Datensätze, kann jedoch bei großen Eingaben zu übermäßigen Zeichenfolgenzuordnungen führen.

Für eine effizientere Sortierung können wir die Zeichenfolgen Rune für Rune vergleichen und dabei ihre Groß-/Kleinschreibung ignorieren:

<code class="go">func lessLower(sa, sb string) bool {
    for {
        rb, nb := utf8.DecodeRuneInString(sb)
        if nb == 0 {
            return false
        }

        ra, na := utf8.DecodeRuneInString(sa)
        if na == 0 {
            return true
        }

        rb = unicode.ToLower(rb)
        ra = unicode.ToLower(ra)

        if ra != rb {
            return ra < rb
        }

        sa = sa[na:]
        sb = sb[nb:]
    }
}

sort.Strings(data, func(i, j int) bool {
    return lessLower(data[i], data[j])
})</code>

Dieser Ansatz vermeidet unnötige Zuordnungen, indem die Runen der Zeichenfolgen direkt verglichen werden.

Für mehr Flexibilität und sprachspezifische Sortierung sollten Sie die Verwendung des Pakets collate in Betracht ziehen, das Gebietsschemata und sprachspezifische Sortierregeln bereitstellt.

Das obige ist der detaillierte Inhalt vonWie erreicht man in Go mit sort.Strings() eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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