在Ruby中,默认排序首先放置空字符串.
['', 'g', 'z', 'a', 'r', 'u', '', 'n'].sort
Run Code Online (Sandbox Code Playgroud)
得到:
["", "", "a", "g", "n", "r", "u", "z"]
Run Code Online (Sandbox Code Playgroud)
但是,在最后想要空字符串是很常见的.
做类似的事情:
['', 'g', 'z', 'a', 'r', 'u', '', 'n'].sort { |a, b| a[0] && b[0] ? a <=> b : a[0] ? -1 : b[0] ? 1 : 0 }
Run Code Online (Sandbox Code Playgroud)
工作并给出:
["a", "g", "n", "r", "u", "z", "", ""]
Run Code Online (Sandbox Code Playgroud)
但是,这不是很易读,也不是很灵活.
是否有一种合理而干净的方法可以让sortRuby将空字符串放在最后?仅映射到没有空字符串的数组,排序,然后在末尾填充空字符串会更好吗?还有其他方法吗?
ruby ×1