Go で sort.Strings() を使用した大文字と小文字を区別しない並べ替え
Go では、sort.Strings() 関数を使用して並べ替えます。文字列のリスト。ただし、そのままでは大文字と小文字を区別しない並べ替えのオプションは提供されません。
カスタム比較関数
大文字と小文字を区別しない並べ替えを実現する 1 つの方法は、次のとおりです。カスタム比較関数を sort.Strings() に渡します。ソート順で最初の文字列が 2 番目の文字列より前に来る必要がある場合、この関数は true を返す必要があります。
次のコードは、これを行う方法を示しています。
<code class="go">package main import ( "fmt" "sort" ) func main() { 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>
このアプローチでは、新しい文字列が作成されます。
Rune ごとの比較
割り当てを回避するには、より効率的なアプローチは、文字列をルーンごとに実行し、その場で小文字に変換します。
<code class="go">sort.Slice(data, func(i, j int) bool { for { rb, nb := utf8.DecodeRuneInString(data[j]) if nb == 0 { return false } ra, na := utf8.DecodeRuneInString(data[i]) if na == 0 { return true } rb = unicode.ToLower(rb) ra = unicode.ToLower(ra) if ra != rb { return ra < rb } data[i] = data[i][na:] data[j] = data[j][nb:] } })</code>
言語固有の並べ替え
Go の Collate パッケージは、言語に合わせてより高度な機能を提供します。特定または文化固有の並べ替え順序。
以上がGo で文字列を大文字と小文字を区別せずに並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。