Ruby ---特殊的分隔输入

1. %Q 和 %q [输入字符串]

一般情况下,字符串常量是包含在 " " 和 ' ' 两个符号中间的,也就是双引号和单引号:

  1. irb (main ): 003: 0> str = "GemBlog beta 0.4"
  2. => "GemBlog beta 0.4"
  3. irb (main ): 004: 0> str1 = 'Hi there!'
  4. => "Hi there!"

双引号、单引号,与其对应的就是%Q和%q,虽然使用引号来包含字符串已经足够,但是在某些情况下,还是应%Q和%q方便,比如字符串中含有单双引号,还有字符串跨越多行的时候:

  1. irb (main ): 012: 0> str = %q [ Tom says: "What's going on?" ]
  2. => " Tom says: /"What's going on?/" "
  3.  
  4. str = %Q/  Hello #{user.name}
  5.                         Welcome to GemBlog!
  6.                                                 galeki
  7.               /

 

 2. %W 和 %w [输入字符串数组]

很多时候,需要我们创建一个包含很多项的数组,而数组的每一项都是一个字符串,比如一个班级内所有的人名的数组,或者是一年12月的缩写数组等等,如果采用常规的创建方法:

  1. irb (main ): 022: 0> month = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ]
  2. => [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]

天,要打那么多的单引号,还有逗号,如果用%w就简单的多:

  1. irb (main ): 023: 0> month = %w (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec )
  2. => [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]

仅仅需要把每一项用空格分隔,再包含在%w中就可以了。

%W和%w的区别和%Q和%q一样,一个代表双引号包含,一个代表单引号包含。

3. %r [正则表达式]

正则表达式一般以 re =/pattern/ 来创建,%r是另一种创建方式,优点是可以减少“/”对正则表达式本身的混淆,而且可以看情况选择%r后的分隔符,比如要想创建匹配linux某个路径的正则"/usr/local/bin/",用常规的方法,由于路径分隔符和“/”相同,就得对“/“进行转义:

  1. irb (main ): 030: 0> re = ///usr//local//bin///
  2. => ///usr//local//bin///

这样写起来又麻烦,可读性也不好,如果用%r就方便多了:

  1. irb (main ): 027: 0> re = %r {/usr/local/bin/ }
  2. => ///usr//local//bin///

 

 4. %x [Shell命令]

 在ruby中执行shell命令很简单,只要把要执行的命令包含在反引号"`"中就行,但是反引号和单引号之间容易混淆,而且,有时命令本身也会用到反引号,这个时候,用%x就最好了:

  1. irb (main ): 036: 0> %x {echo I am `whoami`, now is `date` }
  2. => "I am galeki, now is 2007/04/14 14:25/n"

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值