因为某一个邮箱的密码每一个月都要换一次,并且还不能相似,同时密码要求需要同时有大小写字母和数字
很简单的解决方案:password = Digest::SHA1.hexdigest(str)
。但这样并没有大写字母,所以变成这样password + 'A'
。转念一想,是否可以用sub来把password中一个小写字母变成大写呢?
rails中有一个方法camelize,是把蛇底式的字符串变成驼峰式的,比如
camelize('active_model') # => "ActiveModel"
查看source后,其中一行代码是这样的:
string = string.sub(/^[a-z\d]*/) { |match| inflections.acronyms[match] || match.capitalize }
```
可以借鉴。
所以最后写成这样:
```
password = Digest::SHA1.hexdigest(str).sub(/[a-z]/) {|match| match.upcase}
```