Ruby 1.8.7で単語の配列を狂ったルールでソートしようとしています。これは、大文字小文字を区別しないで並べ替えることができるように簡略化することができます。その後、2つの文字列が同じ場合に限り、大文字と小文字を区別します。if文に基づくRubyソート
私はあなたがちょうど.downcase
が同等である文字列を比較し、それらを並べ替えて、残りを0にすることができると思います。しかし、それは私のために働いていません。
は、ここで私が持っているものです。
["A", "a", "a.", "A.", "Ba", "ba"].sort_by{|a| a.downcase}.sort{|a,b| a.downcase==b.downcase ? a<=>b : 0 }
所望の出力:あなたの助けを
["A", "a", "A.", "a.", "Ba", "ba"]
感謝。
Rubyの配列は要素ごとに比較しますが、これについては[配列#<=>](http://ruby-doc.org/core-2.2)のドキュメントで詳しく説明しています。 0/Array.html#method-i-3C-3D-3E)。この一歩をさらに進めていくために、あなたが(OP)が 's'を最初にソートしたい場合は、' s'の長さを最長で最初にソートし、次に 's.downcase'と' s .size'を 's'で実行すると、配列' [s.downcase、-s.size、s]をソートすることができます。 –
配列を複数の条件でソートすることは、これまで見たことのないアイデアです。これは非常に役に立ちます。 – lwassink
これは質問に対する素晴らしい答えです。私が提出した質問に必要な答えが正確です。ありがとうございます。私は私が私の 'a.downcase == b.downcase'アプローチを修正しようとするためにこれを投稿したので、私は引き裂かれていると付け加えなければなりません。あなたの答えは私が仕事を終わらせるために必要な方法で、私は喜んであなたにチェックマークを与えます。残念ながら、この質問は、これらすべてに重複しているように感じるようです:https://www.google.com/#q=ruby+sort+by+mipleiple+site:stackoverflow.comそして、私は最終的にこれをマークする誰にも謝罪します重複としての質問 – paulguy