Heim > Backend-Entwicklung > Golang > Wie erreicht man eine Sortierung von String-Listen ohne Berücksichtigung der Groß-/Kleinschreibung in Go?

Wie erreicht man eine Sortierung von String-Listen ohne Berücksichtigung der Groß-/Kleinschreibung in Go?

Mary-Kate Olsen
Freigeben: 2024-10-28 06:57:29
Original
1036 Leute haben es durchsucht

How to Achieve Case-Insensitive Sorting of String Lists in Go?

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

Zum Sortieren von Zeichenfolgenlisten in Go ohne Berücksichtigung der Groß- und Kleinschreibung sollten Sie die Verwendung von sort in Betracht ziehen. Slice() bietet eine größere Flexibilität als sort.Strings().

Benutzerdefinierte Funktion für den Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung

Sie können eine benutzerdefinierte Funktion an sort.Slice übergeben (), um Vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen. Die folgende Funktion wandelt Zeichenfolgen in Kleinbuchstaben um, bevor sie verglichen werden:

<code class="go">func lowercaseCompare(s1, s2 string) bool {
    return strings.ToLower(s1) < strings.ToLower(s2)
}</code>
Nach dem Login kopieren

Anwenden der benutzerdefinierten Funktion

So sortieren Sie die Listendaten mithilfe der benutzerdefinierten Funktion ohne Berücksichtigung der Groß- und Kleinschreibung:

<code class="go">sort.Slice(data, lowercaseCompare)</code>
Nach dem Login kopieren

Beispiel

Betrachten Sie die String-Listendaten := []string{"A", "b", "D", "c"}. Wenn Sie es mit der benutzerdefinierten Funktion ohne Berücksichtigung der Groß- und Kleinschreibung sortieren, erhalten Sie das Ergebnis ["A", "b", "c", "D"].

Effiziente Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung

Der obige Ansatz weist für jeden Vergleich zwei neue Zeichenfolgen zu. Bei großen Stringlisten kann dies ineffizient sein. Um die Leistung zu verbessern, ziehen Sie einen Runen-für-Rune-Vergleich in Betracht:

<code class="go">func runeCompare(a, b string) bool {
    for {
        r1, s1 := utf8.DecodeRuneInString(a)
        r2, s2 := utf8.DecodeRuneInString(b)
        if r1 == utf8.RuneError || r1 == r2 {
            return s1 < s2
        }
        a = a[s1:]
        b = b[s2:]
    }
}</code>
Nach dem Login kopieren

Effiziente Sortierung mit runeCompare()

Um Daten effizient zu sortieren:

<code class="go">sort.Slice(data, runeCompare)</code>
Nach dem Login kopieren

Alternative Lösung: Paket sortieren

Für eine sprach- oder kulturspezifische Sortierung sollten Sie die Verwendung des Pakets collate in Betracht ziehen. Es bietet gebietsbezogene Sortierfunktionen.

Das obige ist der detaillierte Inhalt vonWie erreicht man eine Sortierung von String-Listen ohne Berücksichtigung der Groß-/Kleinschreibung in Go?. 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