Ruby对象数组按属性排序
1 .Rails里,我们可以用sort_by方法对一个Ruby对象数组按照某个属性进行排序,如:
ruby 代码
User.find(:all).sort_by {|u| u.name.downcase}
这等效于
ruby 代码
@users = User.find(:all)
@users.sort! { |a,b| a.name.downcase < => b.name.downcase }
sort!后面的!使得排序结果直接存入数组@users中,如果不想排序破坏@users数组,直接用sort即可。
Ruby字符串去空格
- lstrip : 去掉首空格
rstrip : 去掉尾空格
gsub : 去掉全部空格,不过要用到pattern匹配
eg:
s1 = " Test whitespace"
s2 = " hello Ruby Rails "
s3 = "trailing "
puts s1.lstrip+s3 # show lstrip remove leading whitespace
puts s2.rstrip+s3 # show rstrip remove trail whitespace
puts s1.strip + s2.strip + s3 # show strip remove leading and trail whitespace
puts s2.gsub(/\s+/,'')puts s2.gsub(' ','')
puts s2.gsub!(' ','')puts s2.gsub(//,'') # four methods show remove all whitespace
Ruby sort
sort和sort!函数,默认都使用 <=>比较,他们的区别在于:
sort! 可能会改变原先的数组,所以加个感叹号提醒
sort 返回的是新数组,没对原先的数组进行修改
在ruby的SDK里,能看到很多加了感叹号的函数,都意味着对函数操作的对象进行了状态更改。