#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. 1:CSS中一些@规则的用法小结 2: @media用法详解

    第一篇文章:@用法小结 第二篇文章:@media用法 第一篇文章:@用法小结 这篇文章主要介绍了CSS中一些@规则的用法小结,是CSS入门学习中的基础知识,需要的朋友可以参考下     at-rule ...

  2. opengl中VAO,VBO,IBO用法小结(zz) 【转】

    http://cowboy.1988.blog.163.com/blog/static/751057982014380251300/ opengl中VAO,VBO,IBO用法小结 这三个玩意全面取代旧 ...

  3. opengl中VAO,VBO,IBO用法小结【转】

    http://cowboy.1988.blog.163.com/blog/static/751057982014380251300/ opengl中VAO,VBO,IBO用法小结 这三个玩意全面取代旧 ...

  4. c#多线程中Lock()关键字的用法小结

    本篇文章主要是对c#多线程中Lock()关键字的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助     本文介绍C# lock关键字,C#提供了一个关键字lock,它可以把一段 ...

  5. go中整型的用法小结

    示例 // 整型的用法小结 // 注意: // 整型变量在使用时,遵循保小不保大的原则 // 尽量使用占用空间小的数据类型 package main import ( "fmt" ...

  6. Android中static和final用法小结

    Java关键字static.final使用小结 static  1. static变量     按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是 ...

  7. go中指针类型的用法小结

    代码 // 指针的用法 package main import ( "fmt" ) func main() { var i int = 100 // 输出i的地址 fmt.Prin ...

  8. Java中static、final用法小结

    一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...

  9. Java中static、final用法小结(转)

    一.final 1.final变量: 当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引 ...

随机推荐

  1. SAP用户权限解剖及自修改

    通常BASIS会使用PFCG做权限管理,时你保存时会产生一个系统外的profile name,记得SU01时用户有profile 和role两栏位吗?它们的关系如何呢? 首先明白几个概念.1.acti ...

  2. Listbox与Listbox with key的区别

    标准解释: ListboxVisualization as listbox in which a list of entries is displayed with one short descrip ...

  3. 编译安装mysql(Ubuntu10 64位)

    选用较好的编译器和较好的编译器选项,这样应用可提高性能10-30%,这个对大多数程序都非常重要 Mysql的编译,不同的版本具体的配置方式是有差别的 旧版的配置形式参考 这个形式主要是使用config ...

  4. 转:jQuery.data

    原文地址:http://www.it165.net/pro/html/201404/11922.html 内存泄露 首先看看什么是内存泄露,这里直接拿来Aaron中的这部分来说明什么是内存泄露,内存泄 ...

  5. assign,copy,strong,weak,nonatomic的理解

    举个例子: NSString *houseOfMM = [[NSString alloc] initWithString:'MM的三室两厅']; 上面一段代码会执行以下两个动作:  1 在堆上分配一段 ...

  6. 最全面的NSDateHelper 分享

    NSDateUtil 分享 (ios开发交流群:486468672) 代码下载:https://github.com/foxswang/NSDateUtil 史上最全面NSDate Utility 没 ...

  7. Android Studio git 版本回退到最新的版本

    1.场景 1.1 最新三次的提交 分别是:定义了一个变量k = 10 . 定义了一个变量 j = 6  . 定义了一个变量 i = 5 ; 本地仓库 和 远程仓库保持一致 1.2  我添加了一行代码 ...

  8. 我的Android六章:Android中SQLite数据库操作

    今天学习的内容是Android中的SQLite数据库操作,在讲解这个内容之前小编在前面有一篇博客也是讲解了SQLite数据库的操作,而那篇博客的讲解是讲述了 如何在Window中通过DOM来操作数据库 ...

  9. CentOS添加新硬盘到新的分区(xfs/ext4) 或者添加新分区

    CentOs添加新硬盘到新的分区(xfs/ext4)  添加新分区 转载请注明:http://www.cnblogs.com/juandx/p/5618162.html 这篇文章介绍怎么添加一块新的硬 ...

  10. informatica powercenter学习笔记(LookUp 使用)

    LOOKUP TRANSFORMATION的使用点评: LOOKUP基本用法不熟的话请参考下附属信息. 用法感受: 1 LOOKUP的作用跟我们以前在EXCEL的函数功能类似,就是隔表取值.优点就是用 ...