Ruby 裏的 %Q, %q, %W, %w, %x, %r, %s, %i (譯)轉

原文地址  轉自正則表達式

%Q

用於替代雙引號的字符串. 當你須要在字符串裏放入不少引號時候, 能夠直接用下面方法而不須要在引號前逐個添加反斜槓 (\")shell

>> %Q(Joe said: "Frank said: "#{what_frank_said}"")
=> "Joe said: "Frank said: "Hello!"""

(...)也可用其餘非數字字母的符號或成對的符號代替, 諸如[...]!...!+...+,{...}<...>等.

如下寫法所有與上面等效:數組

>> %Q!Joe said: "Frank said: "#{what_frank_said}""!
>> %Q[Joe said: "Frank said: "#{what_frank_said}""]
>> %Q+Joe said: "Frank said: "#{what_frank_said}""+

除此以外還可省略Q寫做:ruby

>> %/Joe said: "Frank said: "#{what_frank_said}""/
=> "Joe said: "Frank said: "Hello!""" 

%q

%Q相似, 可是表示的是單引號字符串wordpress

>> %q(Joe said: 'Frank said: '#{what_frank_said} ' ')
=> "Joe said: 'Frank said: '\#{what_frank_said} ' '"    

%W

語法近似於%Q, 用於表示其中元素被雙引號括起的數組.spa

>> %W(#{foo} Bar Bar\ with\ space)
=> ["Foo", "Bar", "Bar with space"] 

%w

用於表示其中元素被單引號括起的數組. 比較奇怪的是\(斜槓空格)會被轉化成(空格), 可是其餘的內容不會.code

>> %w(a b c\ d \#e #{1}f)
=> ["a", "b", "c d", "\\#e", "\#{1}f"]

%x

使用`方法執行一段shell腳本並返回標準輸出內容.字符串

>> %x(echo foo:#{foo})
=> "foo:Foo\n"    

%r

語法近似於%Q, 用於正則表達式.get

>> %r(/home/#{foo})
 => "/\\/home\\/Foo/"     

%s

用於表示symbol, 可是不會對其中表達式等內容進行轉化it

>> %s(foo)
=> :foo
>> %s(foo bar)
=> :"foo bar"
>> %s(#{foo} bar)
=> :"\#{foo} bar"

%i

Ruby 2.0 以後引入的語法, 用於生成一個symbol數組

2.0.0p247 :014 > %i(a b c)
=> [:a, :b, :c] 
相關文章
相關標籤/搜索