sub后面接block

因为某一个邮箱的密码每一个月都要换一次,并且还不能相似,同时密码要求需要同时有大小写字母和数字
很简单的解决方案: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}
```
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容