`
fantaxy025025
  • 浏览: 1330216 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Ruby_语法_百分号%_笔记_搜集整理

 
阅读更多

Ruby_语法_百分号%_笔记_搜集整理

 

    在Ruby语言中到处充斥着语法糖衣,有很多的惯用表示法,对于初学者来说,往往被这些技巧搞得晕头转向。     
    %{String}  用于创建一个使用双引号括起来的字符串 
    %Q{String} 用于创建一个使用双引号括起来的字符串 
    %q{String} 用于创建一个使用单引号括起来的字符串 
    %r{String} 用于创建一个正则表达式字面值 
    %w{String} 用于将一个字符串以空白字符切分成一个字符串数组,进行较少替换(#{}当成普通字符) 
    %W{String} 用于将一个字符串以空白字符切分成一个字符串数组,进行较多替换
(#{}当成替换字符) 

 

    %s{String} 用于生成一个符号对象 
    %x{String} 用于执行String所代表的命令 

 

更新:2013-04-12

这几个是十分有用的,尤其是有特殊字符重复的时候,为了代码易读好看,还是要好好用的。

比如正则中处理html,用转义就要死人的。

用%r就会比较好了,发现%r后面用什么符号好呢?

我试了好介个,发现用 %r%正则这里哦%,或者用 %r#正则写这里#


    PS:上面几个%表示法中用{}扩住了String,其实这个{}只是一种分割符,可以换成别的字符,比如(),那么%表示法就是%(String),当然还可以是别的字符,对于非括号类型的分割符,左右两边要相同,如%!String! 

    下面我对这些表示法简单举几个例子: 

    %{String}用于创建一个使用双引号括起来的字符串 
    这个表示法与%Q{String}完全一样,这边直接句个例子看结果: 

Ruby代码   收藏代码
  1. result = %{hello}  
  2. puts "result is: #{result}, Type is:#{result.class}"  


    结果:

引用

result is: hello, Type is:String 



    %Q{String}用于创建一个使用双引号括起来的字符串 
    %q{String}用于创建一个使用单引号括起来的字符串 
    从说明中可以看出这两个表示法的区别就是一个使用双引号,一个使用单引号。使用双引号的字符串会对字符串中的变量做较多替换,而单引号则做较少的替换,具体看例子。先看%Q{String}:

Ruby代码   收藏代码
  1. world = "world"  
  2. result = %Q{hello #{world}}  
  3. puts "result is: #{result}, Type is:#{result.class}"  


    结果:

引用

result is: hello world, Type is:String 


    换成%q{String}:

Ruby代码   收藏代码
  1. world = "world"  
  2. result = %q{hello #{world}}  
  3. puts "result is: #{result}, Type is:#{result.class}"  


    结果:

引用

result is: hello #{world}, Type is:String 


    从上面的结果可以看出,较少替换的情况下,#{world}被解析成了字符串,而不会去计算这个变量中的值。 

    %r{String}用于创建一个正则表达式字面值 
    就像使用/reg/方式一样,看代码:

Ruby代码   收藏代码
  1. result = %r{world}  
  2. puts result =~ "hello world"  
  3. puts "result is: #{result}, Type is:#{result.class}"  


    结果:

引用


result is: (?-mix:world), Type is:Regexp 


    可以看出,world从第6个字符开始匹配 

    %w{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较少替换 (#{}当成普通字符) 
    %W{String}用于将一个字符串以空白字符切分成一个字符串数组,进行较多替换(#{}当成替换字符)  

 

    这两个应该是大家见过最多的,用这个方式构造数组,可以省下一些逗号,Ruby真是会惯坏大家,以后大家都不用标点符号了。 
    同样给一个简单的例子:

Ruby代码   收藏代码
  1. result = %w{hello world}  
  2. puts "result is: #{result}, Type is:#{result.class}, length is:#{result.length}"  
  3.  
  4. x = 100
  5. puts %w(#{x} #{x})
  6. puts %W(#{x} #{x})


    结果:

引用

result is: helloworld, Type is:Array, length is:2 
["\#{x}", "\#{x}"]
["100", "100"]



    %s{String}用于生成一个符号对象 
    直接先上代码:

Ruby代码   收藏代码
  1. result = %s{hello world}  
  2. puts "result is: #{result}, Type is:#{result.class}"  
  3. sym = :"hello world"  
  4. 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下的记事本,这里我就不列结果了(那是一个大家熟悉的窗口)。大家自己试试看 

 

 

参考:http://meladet.iteye.com/blog/440195 感谢作者!!

 

 

 

……

……

……

*|*

……

……

……

 
分享到:
评论

相关推荐

    test_logger1.rar_Logger wat_ruby _watir_watir ruby_watir-webdriv

    Watir(Web Application Testing in Ruby)是Ruby社区开发的一个开源库,它允许我们用Ruby来编写浏览器自动化测试,支持多种主流浏览器,如Chrome、Firefox、Safari等。 标题中的“test_logger1.rar_Logger wat_...

    笨办法学ruby_笨办法学ruby_ruby_bravevk4_

    《笨办法学Ruby》是一本面向初学者的Ruby编程教程,以其简单、直接的教学风格而闻名。Ruby是一种面向对象的编程语言,强调简洁和可读性,由日本人松本行弘(Yukihiro Matsumoto)于1995年创建。这本书旨在通过大量的...

    hw-ruby-intro.zip_SaaS软件工程_hw-ruby-intro_ruby _ruby 中文_saas

    1. **Ruby语言**:Ruby是一种面向对象的、动态类型的编程语言,以其简洁的语法和强大的元编程能力著称。它的设计哲学是强调程序员的生产力,使得编写代码变得更加简单和愉快。Ruby的特色包括块(blocks)、闭包...

    Ruby_on_Rails笔记

    ### Ruby on Rails 笔记知识点总结 #### 一、引言 在《Ruby on Rails笔记》中,作者陈刚分享了他在学习Ruby on Rails过程中的经验与心得。这份笔记不仅包含了作者的学习历程和个人体会,还汇集了他在学习过程中遇到...

    ruby_ship, 便携式 MRI ruby 环境和工具集.zip

    ruby_ship, 便携式 MRI ruby 环境和工具集 ruby-船 可以在任何平台上移植便携式 MRI ruby 环境,任何版本的MRI ruby ! 不需要在计算机上安装 ruby 即可使用它 !ruby的目标是拥有一个包含 ruby的单独文件夹,它在...

    ruby_1_9_3_core_rdocs

    3. **块语法变化**:Ruby 1.9.3中,块的语法变得更统一,可以使用`do..end`或者`{..}`,而不再强制使用`=begin`和`=end`。 4. **模块 Mixin 变化**:引入了`prepend`方法,允许模块的代码在被混入的类的实例方法...

    Ruby-rubybuild编译和安装Ruby

    Ruby是一种动态、开源的编程语言,以其简洁、优雅的语法和强大的元编程能力著称。在Ruby开发中,为了管理不同版本的Ruby环境,我们常常会使用到`rbenv`和`ruby-build`这两个工具。本文将详细介绍如何使用`ruby-build...

    ruby语法自整理

    Ruby是一种动态类型的编程语言,以其简洁的语法和强大的功能而受到开发者喜爱。下面是对Ruby语法的详细解析: 1. 变量与常量 - 局部变量:以小写字母或下划线开头,如`var`或`_var`。 - 全局变量:以美元符号`$`...

    arachno_ruby_ide

    arachno_ruby_ide破解文件. ruby语言的一款收费ide的破解文件

    the_ruby_programming_language原版

    书中所涉及的内容可能包括但不限于Ruby语言的语法、数据类型、控制结构、模块、类和对象、异常处理、文件操作、网络编程、安全性、内置库以及高级主题等。 在标签中提到了“ruby 英文原版”,表明这本书是原版英文...

    ruby_1_8_6_core_rdocs

    8. **Block**:Ruby 中的代码块是一种特殊的语法结构,通常与迭代器方法一起使用。它们可以用 `{}` 或 `do..end` 定义,并可以通过 `yield` 关键字在方法内部调用。 9. **Gem**:Ruby 的包管理系统,允许开发者分发...

    Ruby_2.6.6.zip

    Ruby是面向对象的脚本语言,它以其简洁、优雅的语法和强大的社区支持而闻名。在本场景中,"Ruby_2.6.6.zip" 是一个包含Ruby 2.6.6版本的压缩包,这通常是用于在本地环境中搭建Jekyll博客的必要组件。Jekyll是一个...

    ruby_on_rails安装部署指导手册

    ### Ruby on Rails 安装与部署知识要点 #### 一、前言 在进行 Ruby on Rails 的安装与部署过程中,我们需要关注几个核心方面:系统版本兼容性、软件依赖包的选择与安装、Ruby 语言环境的配置以及 Rails 应用的具体...

    patch_def_ruby_Metaprogramming_Before_

    在Ruby编程语言中,元编程是一种强大的特性,它允许代码在运行时定义或修改自身的行为。"patch_def_ruby_Metaprogramming_Before_" 的标题暗示了我们将在讨论如何利用元编程技术来添加在方法之前的钩子,比如 `def_...

    ruby_1_9_3_core_rdocs.gz

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力深受开发者喜爱。Ruby 1.9.3是Ruby的一个重要版本,它在1.9系列中引入了诸多改进和新特性,进一步提升了性能和兼容性。本文将...

    ruby _1.9.3 _gem环境

    Ruby 1.9.3是Ruby的一个重要版本,它引入了许多改进和新特性,包括性能优化和语法增强。在Ruby 1.9.3中,Gem环境的管理和使用对于开发者来说至关重要。 一、Ruby Gem 的基本概念 Ruby Gem 包含了Ruby库、文档、元...

    通过OmniAuth设计多种服务_Ruby_CSS_下载.zip

    通过OmniAuth设计多种服务_Ruby_CSS_下载

    Ruby编写的面向行的搜索引擎源码_Ruby_CSS_下载.zip

    Ruby编写的面向行的搜索引擎源码_Ruby_CSS_下载.zip

    Exercism-exercises-in-Ruby.-ruby.zip

    Exercism_exercises_in_Ruby._ruby.zip Exercism_exercises_in_Ruby._ruby.zip Exercism_exercises_in_Ruby._ruby.zip Exercism_exercises_in_Ruby._ruby.zip Exercism_exercises_in_Ruby._ruby.zip Exercism_...

Global site tag (gtag.js) - Google Analytics