首页 > 学院 > 开发设计 > 正文

21个你应该知道的Ruby编程技巧

2019-10-26 19:22:57
字体:
来源:转载
供稿:网友

1. 快速获取正则表达式的匹配值

通常我们使用正则表达式,都是先match,然后再取结果,但是这样有时候会抛异常,看下面例子:

代码如下:
email = "Fred Bloggs "

email.match(//)[1] # => "fred@bloggs.com"

email[//, 1] # => "fred@bloggs.com"

email.match(/(x)/)[1] # => NoMethodError [:(]

email[/(x)/, 1] # => nil

email[/([bcd]).*?([fgh])/, 2] # => "g"

上面例子中还有一种更简单的方法,就是使用 String#[]方法,可以直接匹配正则表达式,更简洁,虽然看起来使用了魔鬼数字。
当然你可以省略掉那个魔鬼数字,如果仅匹配一次的话:

代码如下:
x = 'this is a test'

x[/[aeiou].+?[aeiou]/] # => 'is i'

这个例子中,我们匹配规则“先匹配一个元音,然后一个辅音,再接着一个元音”。

2. Array#join!的快捷实现

我们知道Array的*操作,是将数组里面的元素成倍的增加:

代码如下:
[1, 2, 3] * 3 == [1, 2, 3, 1, 2, 3, 1, 2, 3]

但是当乘因子不是数字是字符串会出现什么效果?

代码如下:
%w{this is a test} * ", " # => "this, is, a, test"

h = { :name => "Fred", :age => 77 }

h.map { |i| i * "=" } * "n" # => "age=77nname=Fred"

对了,这就是join!的效果。因此可以用这种方式来快捷地实现join!操作。

3. 快速格式化十进制数字

格式化浮点数字的精度显示通常使用sprintf这个函数,可是有一种更快捷的方式,使用字符串。

代码如下:
money = 9.5

"%.2f" % money # => "9.50"

4. 快速解析字符串

在技巧3中我们看到了数字的格式化,这里就说一下字符串格式的快捷方式。

代码如下:
"[%s]" % "same old drag" # => "[same old drag]"

这里的意思是将”same old drag”显示到[]中。
我们再看一下具体的格式化方法:

代码如下:
x = %w{p hello p}

"%s" % x # => "

hello

5. 递归删除文件和目录

FileUtils提供了这种方法:

代码如下:
require 'fileutils'

FileUtils.rm_r 'somedir'

还有一个方法是FileUtils.rm_rf,与linux上的 rm -rf 对应。

6. 快速穷举可枚举对象

使用*操作可以快速的穷举出可枚举对象中的所有元素,像Array,Hash这种对象。

代码如下:
a = %w{a b}

b = %w{c d}

[a + b]                              # => [["a", "b", "c", "d"]]

[*a + b]                             # => ["a", "b", "c", "d"]

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表