配列をアルファベット順に並べ替えるにはどうすればいいですか?私はアルファベット順に並べ替え
sort_by(&:field_name)
を試してみましたしかし、それは大文字の順で私に配列を与えると、その後order.Iが
array.sort! { |x,y| x.field_name.downcase <=> y.field_name.downcase }
を試してみました下部ケースは、この問題を解決する方法はありますか?
配列をアルファベット順に並べ替えるにはどうすればいいですか?私はアルファベット順に並べ替え
sort_by(&:field_name)
を試してみましたしかし、それは大文字の順で私に配列を与えると、その後order.Iが
array.sort! { |x,y| x.field_name.downcase <=> y.field_name.downcase }
を試してみました下部ケースは、この問題を解決する方法はありますか?
最初の並べ替えのように、その後のすべての文字列をdowncaseとすべきである:
array = ["john", "Alice", "Joseph", "anna", "Zilhan"]
array.sort_by!{ |e| e.downcase }
=> ["Alice", "anna", "john", "Joseph", "Zilhan"]
あなたはちょうど間違いを犯した。並び替え!配列オブジェクト自体をソートします。 –
はい、私はそれが要件に依存していることを知っています、あなたも使用することがあります:new_array = array.sort_by {| e | e.downcase}となりますが、古い配列では別のオブジェクトを作成する必要があります。 –
は注意してください - 名前は特殊文字を含めることができます。これらは最後までソートされます。
>> ["Ägidius", "john", "Alice", "Zilhan"].sort_by!{ |e| e.downcase }
=> ["Alice", "john", "Zilhan", "Ägidius"]
これをカバーするには、使用することができます...
>> ["Ägidius", "john", "Alice", "Zilhan"].sort_by!{ |e| ActiveSupport::Inflector.transliterate(e.downcase) }
=> ["Ägidius", "Alice", "john", "Zilhan"]
あなたのサンプル列を貼り付けてください。 –
サンプル配列[ジョン、アリス、ジョセフ、アンナ、ジルハン]私は結果を[アリス、アンナ、ジョン、ジョセフ、ジルハン]のようにしたい。 – nisha