Ruby ---特殊的分隔输入

本文介绍了Ruby语言中处理字符串的多种方式,包括使用%Q和%q简化含有特殊字符的字符串定义,利用%W和%w快速创建字符串数组,通过%r创建清晰的正则表达式,以及运用%x执行Shell命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、付费专栏及课程。

余额充值