[No000010]Ruby 中一些百分号(%)的用法小结
#Ruby 中一些百分号(%)的用法小结
#这篇文章主要介绍了Ruby 中一些百分号(%)的用法小结,需要的朋友可以参考下
what_frank_said = "Hello!"
#%Q
#用于替代双引号的字符串. 当你需要在字符串里放入很多引号时候, 可以直接用下面方法而不需要在引号前逐个添加反斜杠 (\")
puts %Q(1.Joe said: "Frank said: "#{what_frank_said}"") #“#”不能省
=begin 执行结果
=> "1.Joe said: "Frank said: "Hello!"""
=end
#(...)也可用其他非数字字母的符号或成对的符号代替, 诸如[...], !...!, +...+,{...}, <...>等.
#以下写法全部与上面等效:
puts %Q!2.Joe said: "Frank said: "#{what_frank_said}""!
puts %Q[3.Joe said: "Frank said: "#{what_frank_said}""]
puts %Q+4.Joe said: "Frank said: "#{what_frank_said}""+
#除此之外还可省略Q写作:
puts %/5.Joe said: "Frank said: "#{what_frank_said}""/
=begin 执行结果
=> "5.Joe said: "Frank said: "Hello!"""
=end
#%q
#与%Q类似, 但是表示的是单引号字符串
puts %q(6.Joe said: 'Frank said: "#{what_frank_said}"')
=begin 执行结果
=> "6.Joe said: 'Frank said: "#{what_frank_said}"'"
=end
#%W
#语法近似于%Q, 用于表示其中元素被双引号括起的数组.
foo = "Foo"
arr = %W(#{foo} Bar Bar\ with\ space)
puts arr #=> ["Foo", "Bar", "Bar with space"]
#%w
#用于表示其中元素被单引号括起的数组. 比较奇怪的是\(斜杠空格)会被转化成(空格), 但是其他的内容不会.
arrs = %w(a b c\ d \#e #{1}f g\h)
puts arrs #=> ["a", "b", "c d", "\#e", "#{1}f", "g\h"]
#%x
#使用`方法执行一段shell脚本并返回标准输出内容.
puts %x(echo foo:#{foo}) #=> "foo:Foo\n"
#%r
#语法近似于%Q, 用于正则表达式.
puts %r(/home/#{foo}) #=> "/\/home\/Foo/"
#%s
#用于表示symbol, 但是不会对其中表达式等内容进行转化
puts %s(foo) #=> :foo
puts %s(foo bar) #=> :"foo bar"
puts %s(#{foo} bar) #=> :"\#{foo} bar"
#%i
#Ruby 2.0 之后引入的语法, 用于生成一个symbol数组
sarr =%i(a b c) #=> [:a, :b, :c]
puts sarr
#总结:
#%{String} 用于创建一个使用双引号括起来的字符串
#%Q{String} 用于创建一个使用双引号括起来的字符串
puts %Q!Some String of “Characters”! #=>"Some String of /”Characters/”"
#%q{String} 用于创建一个使用单引号括起来的字符串
puts %q!Some String of “Characters”! #=>"Some String of “Characters”"
#%r{String} 用于创建一个正则表达式字面值
puts %r{/usr/bin/} #=> /\/usr\/bin\/
#%w{String} 用于将一个字符串以空白字符切分成一个字符串数组,进行较少替换
#%W{String} 用于将一个字符串以空白字符切分成一个字符串数组,进行较多替换
puts %W(North South East West) #=> ["North", "South", "East", "West"]
#%s{String} 用于生成一个符号对象
#%x{String} 用于执行String所代表的命令
#puts %x{ ls /usr/local } #=> `ls /usr/local` linux下运行
#PS:上面几个%表示法中用{}扩住了String,其实这个{} 只是一种分割符,可以换成别的字符,比如(),那么%表示法就是%(String),当然还可以是别的字符,对于非括号类型的分割符,左右两边要相同, 如%!String!
#下面我对这些表示法简单举几个例子:
#%{String}用于创建一个使用双引号括起来的字符串
#这个表示法与%Q{String}完全一样,这边直接句个例子看结果:
result = %{hello}
puts "result is: #{result}, Type is:#{result.class}"
#结果: result is: hello, Type is:String
#%Q{String}用于创建一个使用双引号括起来的字符串
#%q{String}用于创建一个使用单引号括起来的字符串
#从说明中可以看出这两个表示法的区别就是一个使用双引号,一个使用单引号。使用双引号的字符串会对字符串中的变量做较多替换,而单引号则做较少的替换,具 体看例子。先看%Q{String}:
world = "world"
result = %Q{hello #{world}}
puts "result is: #{result}, Type is:#{result.class}"
#结果: result is: hello world, Type is:String
#换成%q{String}:
world = "world"
result = %q{hello #{world}}
puts "result is: #{result}, Type is:#{result.class}"
#结果: result is: hello #{world}, Type is:String
#从上面的结果可以看出,较少替换的情况下,#{world}被解析成了字符串,而不会去计算这个变量中的值。
#%r{String}用于创建一个正则表达式字面值
#就像使用/reg/方式一样,看代码:
result = %r{world}
puts result =~ "hello --world"
puts "result is: #{result}, Type is:#{result.class}"
#结果: 8 result is: (?-mix:world), Type is:Regexp
#可以看出,world从第8个字符开始匹配
#%w{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较少替换
#%W{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较多替换
#这两个应该是大家见过最多的,用这个方式构造数组,可以省下一些逗号,Ruby真 是会惯坏大家,以后大家都不用标点符号了。
#同样给一个简单的例子:
result = %w{hello world}
puts "result is: #{result}, Type is:#{result.class}, length is:#{result.length}"
#结果:result is: ["hello", "world"], Type is:Array, length is:2
#%s{String}用于生成一个符号对象
#直接先上代码:
result = %s{hello world}
puts "result is: #{result}, Type is:#{result.class}"
sym = :"hello world"
puts "the two symbol is the same: #{sym == result}"
#结果:#result is: hello world, Type is:Symbol #the two symbol is the same: true
#可以看出,这两中方式生成的symbol对象完全一样
#%x{String}用于执行String所代表的命令,比如:
%x{notepad.exe} #可以启动windows下的记事本,这里我就不列结果了(那是一个大家熟悉的窗口)。
[No000010]Ruby 中一些百分号(%)的用法小结的更多相关文章
- 1:CSS中一些@规则的用法小结 2: @media用法详解
第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下 at-rule ...
- opengl中VAO,VBO,IBO用法小结(zz) 【转】
http://cowboy.1988.blog.163.com/blog/static/751057982014380251300/ opengl中VAO,VBO,IBO用法小结 这三个玩意全面取代旧 ...
- opengl中VAO,VBO,IBO用法小结【转】
http://cowboy.1988.blog.163.com/blog/static/751057982014380251300/ opengl中VAO,VBO,IBO用法小结 这三个玩意全面取代旧 ...
- c#多线程中Lock()关键字的用法小结
本篇文章主要是对c#多线程中Lock()关键字的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 本文介绍C# lock关键字,C#提供了一个关键字lock,它可以把一段 ...
- go中整型的用法小结
示例 // 整型的用法小结 // 注意: // 整型变量在使用时,遵循保小不保大的原则 // 尽量使用占用空间小的数据类型 package main import ( "fmt" ...
- Android中static和final用法小结
Java关键字static.final使用小结 static 1. static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是 ...
- go中指针类型的用法小结
代码 // 指针的用法 package main import ( "fmt" ) func main() { var i int = 100 // 输出i的地址 fmt.Prin ...
- Java中static、final用法小结
一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...
- Java中static、final用法小结(转)
一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...
随机推荐
- SAP (ABAP) 常用的数学函数
Function func Return value abs Absolute value of the argument arg (绝对值) sign Plus/minus sign of the ...
- SharePoint 2010 站点附加数据升级到SP2013
首先,去SharePoint 2010的数据库服务器上,找到站点的数据库,备份.还原到SharePoint 2013环境中: 如果不知道数据库服务器是哪台,可以通过服务器场上的服务器查看: 如果不知道 ...
- Java学习心得之 Linux下搭建JavaWeb环境
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 Linux下搭建JavaWeb环境 1. 前言2. Java安装3. t ...
- Android Activity和Fragment的转场动画
Android Activity和Fragment的转场动画 Activity转场动画 Activity的转场动画是通过overridePendingTransition(int enterAnim, ...
- Android 4.4 KitKat 新特性
New in Android 4.4 KitKat 本文是一个概览,关于KitKat,也即Android4.4的新东西,先是功能型的,之后是设计上的. 很多特性本文并没有提到,很多提到的特性也只是简短 ...
- word第一讲(0723)
工作区导航 F6键:从程序窗口中的一个任务窗格移动到另一个任务窗格.(在菜单栏.工作区.状态栏切换) alt键选中选项卡.左右键切换选项卡.下光标切换到选项卡里具体内容. 设置版面 页面布局-> ...
- android studio 使用SVN 锁定文件,防止别人修改(基于Android studio 1.4 )
首先假设开发 A , 和 开发 B , 在使用 SVN 进行项目管理.那么A如何才能 某个锁定文件,防止B修改. 1.第一步,给这个文件加锁 完成这一步,则这个文件就别锁定了. 2.第二步,假如 ...
- Android 手机卫士--home界面布局
本文实现当从splash界面进入hone界面的时候,产生一种渐进淡入的动画效果,在onCreate中调用一个方法initAnimation(),代码如下: /** * 添加淡入的动画效果 */ pri ...
- 实战CENTOS6.5安装docker并创建asp.net mvc 5 镜像,运行MVC 网站
Docker,容器,让研发.测试.生产同一环境,可在linux平台上混合使用JAVA与net 程序 Centos6.5安装docker 参考http://my.oschina.net/kcw/blog ...
- Tomcat+Nginx+Lvs部署方案与性能调优
立项要求:用户登录并发数达到1000vuser.原项目设计没有Nginx和LVS,经过性能测试并发数最高到400,就报响应超时,且系统资源消耗严重.经过和架构师商议决定先加入Nginx解决负载均衡处理 ...