Ruby 里的 %Q, %q, %W, %w, %x, %r, %s, %i

%Q

用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\")

>> %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写作:

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

%q

%Q类似, 但是表示的是单引号字符串

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

%W

语法近似于%Q, 用于表示其中元素被双引号括起的数组.

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

%w

用于表示其中元素被单引号括起的数组. 比较奇怪的是\(斜杠空格)会被转化成(空格), 但是其他的内容不会.

>> %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, 用于正则表达式.

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

%s

用于表示symbol, 但是不会对其中表达式等内容进行转化

>> %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] 

原文地址:https://ruby-china.org/topics/18512
时间: 2024-10-15 14:32:38

Ruby 里的 %Q, %q, %W, %w, %x, %r, %s, %i的相关文章

Ruby 里的 %Q, %q, %W, %w, %x, %r, %s, %i (译)转

原文地址  转自 %Q 用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\") >> %Q(Joe said: "Frank said: "#{what_frank_said}"") => "Joe said: "Frank said: "Hello!""" (...)也可用其他非数字字母的符号或成对的符号代替,

Crosswalk Cordova windows下编译出现:bin\node_modules\q\q.js:126 throw e问题解决方法

Crosswalk Cordova windows下编译出现:bin\node_modules\q\q.js:126   throw e问题解决方法 Crosswalk Cordova 编译出现以下问题 D:\code\crosswalk\crosswalk-cordova-10.39.235.15-arm\bin\node_modules\q\q.js:126 throw e; ^ Package name must look like: com.company.Name 原因是:create

l?e?f?t? ?j?o?i?n? ?o?n? ?a?n?d?与?l?e?f?t? ?j?o?i?n? ?o?n? ?w?h?e?r?e?的?区?别(转载)

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户. 在使用left jion时,on和where条件的区别如下: 1.on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录. 2where条件是在临时表生成好后,再对临时表进行过滤的条件.这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉. 假设有两张表: 表1 tab1: id size 1 10 2 20 3 30 表2 ta

ruby 中%Q %q %W %w %x %r %s的用法

%Q 用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\") >> %Q(Joe said: "Frank said: "#{what_frank_said}"") => "Joe said: "Frank said: "Hello!""" (...)也可用其他非数字字母的符号或成对的符号代替, 诸如[...],

ruby当中的字符串处理%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}"")=> &

在飞儿云主机里使用酷Q时遇到相关问题的解决办法

情况1:酷Q Air版本可以使用,而Pro版本无法运行 解决方法如下: 首先去官网下载一个Por版本试一下,提示成功安装. 不行的话Por压缩包不要删除, 去官网下载Air版本(推荐下载小i词库) 解压之后打开exe进行安装,Air安装成功之后立马去解压Pro安装 上面办法如果还是不行,就把Air的两个词库都下载下来.先装Air的两个词库,再装Pro版本.Air两个都成功了以后Pro就能成功安装 原文地址:https://www.cnblogs.com/xiangxisheng/p/119845

python 读写文件中 w与wt ; r与rt 的区别

w,r,wt,rt都是python里面文件操作的模式. w是写模式,r是读模式. t是windows平台特有的所谓text mode(文本模式),区别在于会自动识别windows平台的换行符. 类Unix平台的换行符是\n,而windows平台用的是\r\n两个ASCII字符来表示换行,python内部采用的是\n来表示换行符. rt模式下,python在读取文本时会自动把\r\n转换成\n. wt模式下,Python写文件时会用\r\n来表示换行.

读写方式 r , r+ , w , w+ , a , a+

r只读,r+读写,不创建:r+:可读可写,若文件不存在,报错 w如果文件已经存在,则不替换: w 就是打开文件,文件如果不存在,就会新建一个文件: w+: 可读可写,若文件不存在,创建 信息来源:https://blog.csdn.net/YMD8005/article/details/51944962 原文地址:https://www.cnblogs.com/luyanru66/p/9580546.html

python 文件读写模式r,r+,w,w+,a,a+的区别(附代码示例)

如下表 模式 可做操作 若文件不存在 是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追加写 a+ 可读可写 创建 否,追加写   1.只读模式(r)一个存在的文件: def file_operation(): with open('/wzd/test.txt', mode='r') as f: # f.write('abc') r = f.readlines() print r print '---done---'