Heim >Backend-Entwicklung >Golang >Wie kann ich in Go mit der Funktion „sort.Strings()' eine Sortierung von Zeichenfolgen ohne Berücksichtigung der Groß-/Kleinschreibung durchführen?

Wie kann ich in Go mit der Funktion „sort.Strings()' eine Sortierung von Zeichenfolgen ohne Berücksichtigung der Groß-/Kleinschreibung durchführen?

DDD
DDDOriginal
2024-10-28 02:24:01235Durchsuche

How can I perform case-insensitive sorting of strings in Go using the `sort.Strings()` function?

Groß-/Kleinschreibung beim Sortieren mit sort.Strings() in Go

In Go ist es möglich, eine Liste von Zeichenfolgen nach Groß-/Kleinschreibung zu sortieren -unempfindliche Weise mithilfe der Funktion sort.Strings() mit einer benutzerdefinierten Vergleichsfunktion. Diese benutzerdefinierte Funktion vergleicht Zeichenfolgen anhand der Ergebnisse der Konvertierung der Zeichenfolgen in Kleinbuchstaben.

Beispiel:

<code class="go">data := []string{"A", "b", "D", "c"}
sort.Strings(data) // Default case-sensitive sorting
fmt.Println(data) // Output: [A b c D]</code>

Um eine Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung zu erreichen, können wir die benutzerdefinierte Funktion definieren Funktion wie folgt:

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

Diese Funktion wandelt beide Zeichenfolgen vor dem Vergleich in Kleinbuchstaben um, was zu einer Sortierreihenfolge ohne Berücksichtigung der Groß- und Kleinschreibung führt.

Ausführen des aktualisierten Codes:

<code class="go">data := []string{"A", "b", "D", "c"}
sort.Slice(data, func(i, j int) bool {
    return strings.ToLower(data[i]) < strings.ToLower(data[j])
})
fmt.Println(data) // Output: [A b c D]</code>

Alternativen:

Obwohl der obige Ansatz effektiv ist, kann er bei Vergleichen String-Zuweisungen beinhalten. Um Zuordnungen zu vermeiden, besteht ein alternativer Ansatz darin, Zeichenfolgen Rune für Rune zu vergleichen und dabei jede Rune in Kleinbuchstaben umzuwandeln:

<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:]
    }
}</code>

Sie können dann diese Funktion „lessLower“ verwenden, um die Zeichenfolgen ohne Berücksichtigung der Groß- und Kleinschreibung zu sortieren:

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

Für sprach- oder kulturspezifische Sortierreihenfolgen sollten Sie die Verwendung des Sortierpakets in Betracht ziehen.

Das obige ist der detaillierte Inhalt vonWie kann ich in Go mit der Funktion „sort.Strings()' eine Sortierung von Zeichenfolgen ohne Berücksichtigung der Groß-/Kleinschreibung durchführen?. 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