%Q | %q | %W | %w | %x | %r | %s
%Q
This is an alternative for double-quoted strings, when you have more quote characters in a string.Instead of putting backslashes in front of them, you can easily write:
>> %Q(Joe said: "Frank said: "#{what_frank_said}"") => "Joe said: "Frank said: "Hello!"""
The parenthesis “(
…)
” can be replaced with any other non-alphanumeric characters and non-printing characters (pairs), so the following commands are equivalent:
>> %Q!Joe said: "Frank said: "#{what_frank_said}""! >> %Q[Joe said: "Frank said: "#{what_frank_said}""] >> %Q+Joe said: "Frank said: "#{what_frank_said}""+
You can use also:
>> %/Joe said: "Frank said: "#{what_frank_said}""/ => "Joe said: "Frank said: "Hello!"""
%q
Used for single-quoted strings.The syntax is similar to %Q, but single-quoted strings are not subject to expression substitution or escape sequences.
>> %q(Joe said: 'Frank said: '#{what_frank_said} ' ') => "Joe said: 'Frank said: '\#{what_frank_said} ' '"
%W
Used for double-quoted array elements.The syntax is similar to %Q
>> %W(#{foo} Bar Bar\ with\ space) => ["Foo", "Bar", "Bar with space"]
%w
Used for single-quoted array elements.The syntax is similar to %Q, but single-quoted elements are not subject to expression substitution or escape sequences.
>> %w(#{foo} Bar Bar\ with\ space) => ["\#{foo}", "Bar", "Bar with space"]
%x
Uses the `
method and returns the standard output of running the command in a subshell.The syntax is similar to %Q.
>> %x(echo foo:#{foo}) => "foo:Foo\n"
%r
Used for regular expressions.The syntax is similar to %Q.
>> %r(/home/#{foo}) => "/\\/home\\/Foo/"
%s
Used for symbols.It’s not subject to expression substitution or escape sequences.
>> %s(foo) => :foo >> %s(foo bar) => :"foo bar" >> %s(#{foo} bar) => :"\#{foo} bar"
Pingback: %Q, %q, %W, %w, %x, %r, %s | myrubylearning
Reblogged this on eddifisher.
Thanks
Ruby 2.0 introduced %i{} to make an array of symbols.
For example:
%i{ cat dog meow } #=> [:cat, :dog, :meow]
http://stackoverflow.com/a/11640038/2475008
Thank U very much!
Reblogged this on IT'S TIME TO LEARN AND THINK and commented:
ITs time we learn this Awesome language called as RUBY.
Hey..
That’s really nice.
Nice post. Thanks!
Reblogged this on and commented:
I stumbled across this and found it rather informative. Obviously I knew of some of these, such as %Q, but certainly never knew of the differences between them all. And the fact that you can use any non alphanumeric chars for the parenthesis is ‘pleasurable’ ^_^
Nice… btw, the # is for what? method call/eval?
I’m assuming you mean the # within the syntax #{rubycode}. This is simply a means of performing ruby code within the string.
For example:
aString = “My String size Is”
p “aString #{aString.size}!”
awesome blog. thanks!!
Reblogged this on rubyonrailscommunity.
Thanks, what about the %{} ?
Reposted and refreshed in https://gist.github.com/jakimowicz/df1e4afb6e226e25d678#file-the-notation-in-ruby-md
Pingback: Introduction to Calabash, Level 2 – testingtofail
And there is another one,
>> %i(foo bar)
=> [:foo, :bar]
Sorry I forgot since which version this syntax is introduced.
Pingback: Arbitrary quotations | Skila
Pingback: More Ruby Miscellanea | Et Cetera