Go 中使用sort.Strings() 不區分大小寫的排序
對於Go 中字串清單的不區分大小寫字串清單的不區分大小寫字串清單排序,請考慮使用sort。 Slice(),比 sort.Strings() 提供了更大的彈性。
用於不區分大小寫比較的自訂函數
您可以將自訂函數傳遞給 sort.Slice () 執行不區分大小寫的比較。以下函數在比較字串之前將字串轉換為小寫:
<code class="go">func lowercaseCompare(s1, s2 string) bool { return strings.ToLower(s1) < strings.ToLower(s2) }</code>
應用自訂函數
要使用自訂函數對列表資料不區分大小寫的排序:
<code class="go">sort.Slice(data, lowercaseCompare)</code>
範例
考慮字串清單資料:= []string{"A", "b", "D", "c"}。使用自訂函數對其進行不區分大小寫的排序會產生結果 ["A", "b", "c", "D"]。
高效的不區分大小寫排序
上述方法為每次比較分配兩個新字串。對於大型字串列表,這可能效率低下。為了提高效能,請考慮逐個符文比較:
<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>
使用runeCompare() 進行高效排序
要有效率地對資料進行排序:
<code class="go">sort.Slice(data, runeCompare)</code>
替代解決方案:collat 套件
對於特定語言或文化的排序,請考慮使用collate 套件。它提供區域設定感知排序功能。
以上是Go中如何實作字串清單的不區分大小寫排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!