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"]
新聞熱點
疑難解答