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

%Q

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

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

(...)也可用其他非数字字母的符号或成对的符号代替, 诸如[...]!...!+...+,{...}<...>等.

以下写法全部与上面等效:

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

除此之外还可省略Q写作:

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

%q

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

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

%W

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

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

%w

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

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

%x

使用`方法执行一段shell脚本并返回标准输出内容.

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

%r

语法近似于%Q, 用于正则表达式.

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

%s

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

1>> %s(foo) 2=> :foo 3>> %s(foo bar) 4=> :"foo bar" 5>> %s(#{foo} bar) 6=> :"\#{foo} bar"

%i

Ruby 2.0 之后引入的语法, 用于生成一个symbol数组

12.0.0p247 :014 > %i(a b c) 2=> [:a, :b, :c]
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

sql注入

反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o